原创 C++泛型編程:函數對象(仿函數)和謂詞的概念、常見內建函數對象

要學習標準庫STL,就不得不去了解函數對象和謂詞,於是本人今天寫篇博客做簡要總結。 函數對象 概念:重載函數調用操作符的類,其對象稱爲函數對象。函數對象使用重載的()時,行爲類似函數調用,因此也稱爲仿函數。另外,仿函數並不是類的特

原创 區間問題(差分數組前綴和)

Description Uncle-lu現在有一個長度爲n的序列,淘氣的uncle-lu對這個序列進行了多次的修改,每次修改的方式都是,對該序列的一段區間整體加上一個數。多次修改之後,uncle-lu想知道該序列中的某一些位置的值

原创 括號序列(前綴和)

Description Uncle-lu有一個括號序列(一個全是左括號與右括號的序列),我們都知道左括號和右括號作爲一對括號稱爲一對匹配,但是右括號和左括號作爲一對括號就不能稱作一對匹配。比如說")(","(()",")()“等這

原创 漢諾塔(河內塔)問題(遞歸)

Description 漢諾塔(又稱河內塔)問題是印度的一個古老的傳說。開天闢地的神勃拉瑪在一個廟裏留下了三根金剛石的棒A、B和C,A上面套着 n 個圓的金片,最大的一個在底下,其餘一個比一個小,依次疊上去,廟裏的衆僧不倦地把它們

原创 自然數拆分問題(深搜dfs)

Description 任何一個大於1的自然數n,總可以拆分成若干個小於n的自然數之和。現在給你一個自然數n,要求你求出n的拆分成一些數字的和。每個拆分後的序列中的數字從小到大排序。然後你需要輸出這些序列,其中字典序小的序列需要優

原创 藍橋杯2017省賽C/C++A組題4方格分割題解(深搜dfs)

標題:方格分割 6x6的方格,沿着格子的邊線剪開成兩部分。 要求這兩部分的形狀完全相同。 如圖: 就是可行的分割法。 試計算: 包括這3種分法在內,一共有多少種不同的分割方法。 注意:旋轉對稱的屬於同一種分割法。 請提交該整數,

原创 解決C++運算符重載時=和+(或-、*、/、後置自增自減)無法連用

背景題目: 定義有理數類(分母不爲0的分數,分子分母均爲整數)Rational,實現相應操作符的重 載。 (1)定義私有數據成員:分子int iUp; 分母 int iDown。 (2)定義私有成員函數:void Reduce()

原创 VS2019跑C++時遇到“無法打開 E:\Project\Debug\Project.exe 進行寫入”怎麼辦

今天寫代碼遇到一個從沒遇到過的情況,想跑代碼,結果報錯,報錯提示的主要內容爲“無法打開 E:\Project\Debug\Project.exe 進行寫入”。這一定不是代碼本身的問題,因爲我之前跑相同的代碼還可以運行的。 在我上網

原创 記錄使用深搜DFS時因沒有保存枚舉數據犯的錯誤

題目:全排列問題 Description 輸出自然數 1 到 n 所有不重複的排列,即 n 的全排列,要求所產生的任一數字序列中不允許出現重複的數字。 Input 第一行爲一個整數n。 Output 由1至n組成的所有不重複的數字

原创 學習C++之STL:vector的構造函數

vector的構造函數有4種形式: 第1種:默認構造函數,採用模板實現類實現,實例代碼如下 vector<int> v1; 執行結果是v1爲空容器,沒有保存任何元素,但是並不意味着v1沒有分配內存 第2種:將已有的數組的區間中

原创 學習C++之STL:vector嵌套vector

在日常生活中我們可以將若干個小容器嵌套在一個大容器中,vector也可以這麼做。 1.創建容器 vector<vector<int> > v;//v的每個元素都是一個整形動態數組 //兩個連續的>之間最好加空格,否則有的編譯器識別

原创 藍橋杯2017省賽C/C++A組題2跳蚱蜢(寬搜bfs)

題目:跳蚱蜢 如圖所示: 有9只盤子,排成1個圓圈。 其中8只盤子內裝着8只蚱蜢,有一個是空盤。 我們把這些蚱蜢順時針編號爲 1~8 每隻蚱蜢都可以跳到相鄰的空盤中, 也可以再用點力,越過一個相鄰的蚱蜢跳到空盤中。 請你計算一下