下面介紹三種方法:
#include
#include
#include
#include
#include
#include
using namespace std;
intf
(int x)
intmain()
上面是遞推的解法
分析如下:
首先,試著寫出n=1,2,3,4的結果:
n=1——2種(取0個,取1個)
n=2——3種(取0個,取1個,取1個) 注意:不能取相鄰的!
n=3——5種(取0個,取1個,取1個,取1個,取2個)
n=4——8種(取0個,取1個,取1個,取1個,取1個,取2個,取2個,取2個)
遞推規律已經很明顯了,第n個會等於前兩個之和,下面再介紹遞推的做法:
#include
using namespace std;
#define maxn 1000000
int ans[maxn]=;
intmain()
cout<
;return0;
}
下面再給出滾動陣列的優化方法:(因為這是相鄰的傳播,所以用3個數就可以完成遞推)
#include
using namespace std;
intmain()
; cin>>n;
for(
int i=
2;i) cout<
;return0;
}
數塔取數問題
1002 數塔取數問題 乙個高度為n的由正整數組成的三角形,從上走到下,求經過的數字和的最大值。每次只能走到下一層相鄰的數上,例如從第3層的6向下走,只能走到第4層的2或9上。5 8 4 3 6 9 7 2 9 5 例子中的最優方案是 5 8 6 9 28 input 第1行 n,n為數塔的高度。2...
數塔取數問題
乙個高度為n的由正整數組成的三角形,從上走到下,求經過的數字和的最大值。每次只能走到下一層相鄰的數上,例如從第3層的6向下走,只能走到第4層的2或9上。5 8 43 6 9 7 2 9 5 例子中的最優方案是 5 8 6 9 28 input 第1行 n,n為數塔的高度。2 n 500 第2 n 1...
平面分割c (含優化)
下面介紹三種方法 include using namespace std intf int x intmain 上面是遞推的解法 分析如下 首先,試著寫出n 1,2,3,4的結果 n 1 2個 n 2 4個 n 3 7個 n 4 11個 遞推規律已經很明顯了,第n個會等於第 n 1 個 n,即 f ...