問題描述
現在小瓜想通過台階走上平台,最底層(小瓜所在的層)編號為1,最頂層編號為n。由於小瓜的腿比較短,他一次只能向上走1級或者2級台階。小瓜想知道他有多少種方法走上平台,你能幫幫他嗎?
輸入
乙個整數n,其中2≤n≤25。
輸出
一行乙個整數,表示小瓜上台階的方案數
資料範圍
對於12%的資料,2≤n≤5;
對於28%的資料,2≤n≤10;
對於100%的資料,2≤n≤25;
輸入樣例
4
輸出樣例
3
對於該問題,適合用遞迴的方法來計算。從倒數第一步開始、從未到頭思考,倒數第一步可能走了一級台階,也可能走了兩級。對於倒數第一步走一級的情況,可分類成倒數第二步走了一級與兩級的情況;對於倒數第一步走了兩級的情況,也可分類成倒數第二步走了一級與兩級的情況……以此類推,見下圖
可以得到:
成功走完的方法數=最後一步走一級的方法數+最後一步走兩級的方法數
即,假設總台階數是10時,走到第10個台階的方法數=走到第9個台階的方法數+走到第8個台階的方法數
又,走到第9個的方法數=走到第8個的方法數+走到第7個的方法數,走到第8個的方法數=走到第7個的方法數+走到第6個的方法數,……
所以有遞推公式,f(n)=f(n-1)+f(n-2),f(n)表示走到第n個台階方法數。
參考**
#include using namespace std;
int goup(int number)
int main()
上台階問題(遞迴,DFS)
題目 一共39層台階。如果我每一步邁上1個台階或者兩個台階,先邁左腳,再邁右腳,然後左右交換,最後一步邁右腳,也就是一共要走偶數步,那麼,上完39級台階,有多少種不同的方法?思路採用遞迴的思想,邊界條件就是台階上數小於0,返回0 台階上等於0,而且步數恰好是偶數步,那麼說明走完了所有台階,方法加1....
賽碼 上台階(C )
設定人現在在台階1層,每次只能上1層到兩層,到台階1層有0種走法,到台階2層有1種走法,到台階3層有2種走法,這樣我們已經知道底部子問題的解。f n f n 1 f n 2 比如說4層只能由2層 跨兩步 或3層到達 跨1步 因此4層的走法數應該是2層走法數和3層走法數的和。使用乙個陣列來儲存到某個台...
1190 上台階(遞推)
1190 上台階 遞推 時間限制 1000 ms 記憶體限制 65536 kb 提交數 20752 通過數 5913 題目描述 樓梯有n 71 n 0 階台階,上樓時可以一步上1階,也可以一步上2階,也可以一步上3階,程式設計計算共有多少種不同的走法。輸入 輸入的每一行包括一組測試資料,即為台階數n...