取數問題c (含優化)

2021-09-24 21:31:11 字數 953 閱讀 9657

下面介紹三種方法:

#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 ...