蒜頭君自從春節回來以後,體重就像加了特技一樣duang~duang~地暴增起來。於是小蒜頭打算每天爬樓梯來燃燒體內的脂肪(咦?蒜怎麼會有脂肪=.=)。蒜頭在爬樓梯的時候腦洞大開,因為蒜頭腿短,爬樓梯的時候一次只能邁1級或2級台階,它就想到了,假如一共有n級台階的話,它一共有多少種方法能夠爬到樓梯頂部呢? 聰明的你快來幫幫小蒜頭吧~建議你使用動態規劃求解哦,直接搜尋是會超時的^o^ 輸入格式: 第一行輸入乙個數n(n<=50),代表樓梯的級數。 輸出格式: 第一行輸出你的方法總數。 樣例1 輸入: 5 輸出: 8
這裡假設總共8級樓梯,開個陣列stairs[8],預設值為0,
假如我們最後走到第八級,那麼依據題意可以從
第六級也可以從第七級走到第八級,那麼走到第八級的
總的方法就是走到第六級的方法加上走到第七級的方法,
而走到第六級的方法可以由第四級和第五級得到,第七級可以
由第五級和第六級得到,依次類推,第**可以由第一級和第二級
得到,所以可以推出這個式子,stairs[i] = stairs[i-1] + stairs[i-2];
而第一級和第二級可以馬上看出來分別為1種和2種方法,所以
馬上的每個台階的方法數就可以根據這個推出來的式子求解了
#include"iostream"
using namespace std;
int main()
; stairs[0] = 1;
stairs[1] = 2;
for(int i = 2; i < 50; i++)
int num;
cin>>num;
cout<
return 0;
}
爬樓梯問題
ok,前段時間在一篇blog上看到乙個關於樓梯的面試題,大概內容如下 現有乙個人,規定他上樓梯時只能一步走乙個台階或者兩個台階。要求 給定任意樓梯的階數,求共有多少種方法爬完樓梯。如果有經驗可以看出,這是一道遞迴的題目。不過這個遞迴 程式怎麼寫呢?我的思路是可以這樣想,不管他前面 怎麼爬,最後總是要...
爬樓梯問題
爬樓梯問題,每次可以走1步或者2步,爬上n層樓梯的總方法,這題就是乙個變相的fibonacci問題。當n 1時,有1種方法,即直接走1步 當n 2時,有2方法 連續走2步,或直接走兩步 對於n,設f n 為總方法,則 f n f n 1 f n 2 ps f n 1 即第一次走一步的走法,f n 2...
爬樓梯問題
有乙個若干階樓梯台階,每次爬只能爬1階或者2階,問有多少種爬法?首先分析一下簡單情況,每種樓梯對應的爬樓種類 假設n階樓梯的爬法為f n 那麼f n f n 1 f n 2 於是我們可以推理得出乙個公式,如下 最後用 實現一下,現在估計大家都會寫了,就不贅述了,如下。public intclimbs...