乙個台階總共有n 級,如果一次可以跳1 級,也可以跳2 級。
求總共有多少總跳法,並分析演算法的時間複雜度。
兩個思路:
1.利用遞迴,就是fibonacci,f(n)=f(n-1)+f(n-2),並且f(1)=1,f(2)=2.
int fibonacci(int n)
2.將上述遞迴用迭代方式實現
int climbstairs(int n)
; if(n<2)
return tmp[n];
for(int i=2;i<=n;i++)
return tmp[2];
}
1、兔子繁殖問題
13世紀義大利數學家斐波那契在他的《算盤書》中提出這樣乙個問題:有人想知道一年內一對兔子可繁殖成多少對,便築了一道圍牆把一對兔子關在裡面。已知一對兔子每乙個月可以生一對小兔子,而一對兔子出生後.第三個月開始生小兔子假如一年內沒有發生死亡,則一對兔子一年內能繁殖成多少對?
分析:這就是斐波那契數列的由來,本節的跳台階問題便是此問題的變形,只是換了種表述形式。
2、換硬幣問題。
想兌換100元錢,有1,2,5,10四種錢,問總共有多少兌換方法。
const int n = 100;
int dimes = ;
int arr[n+1] = ;
int coinexchange(int n){
for(int i=0;i
跳台階問題
題目 乙個台階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有多少總跳法,並分析演算法的時間複雜度。分析 這道題最近經常出現,包括microstrategy等比較重視演算法的公司都曾先後選用過個這道題作為面試題或者筆試題。首先我們考慮最簡單的情況。如果只有1級台階,那顯然只有一種跳法。如果有2...
跳台階問題
有n個階梯,青蛙一次可以跳乙個或者兩個,求總共有多少種跳法可以到達頂端?思路 如果只有一階,那麼只有一種跳法 如果有2階,那麼有2中跳法 跳1階再跳1階,一次跳2階 那麼如果有n階呢?假設對於n階的階梯,我們有f n 中跳法 那麼n階時,我們考慮如果第一次跳共有兩種選擇 第一次跳了1階,剩下n 1階...
跳台階問題
題目 給定乙個有n個台階的樓梯,乙個人從下到上開始跳台階,這個人有兩種跳的方式 一次跳乙個台階,一次跳兩個台階 問 從台階底端跳到台階頂端,有多少種跳台階的方式?分析 首先我們考慮最簡單的情況。如果只有1個台階,那麼顯然只有一種跳法 如果是2級台階,那麼有2種跳法。對於乙個有n級台階的樓梯來說,我們...