跳台階問題

2021-08-31 17:02:04 字數 673 閱讀 2242

***

題目:乙個台階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有多少總跳法,並分析演算法的時間複雜度。

分析:這道題最近經常出現,包括microstrategy等比較重視演算法的公司都曾先後選用過個這道題作為面試題或者筆試題。

首先我們考慮最簡單的情況。如果只有1級台階,那顯然只有一種跳法。如果有2級台階,那就有兩種跳的方法了:一種是分兩次跳,每次跳1級;另外一種就是一次跳2級。

現在我們再來討論一般情況。我們把n級台階時的跳法看成是n的函式,記為f(n)。當n>2時,第一次跳的時候就有兩種不同的選擇:一是第一次只跳1級,此時跳法數目等於後面剩下的n-1級台階的跳法數目,即為f(n-1);另外一種選擇是第一次跳2級,此時跳法數目等於後面剩下的n-2級台階的跳法數目,即為f(n-2)。因此n級台階時的不同跳法的總數f(n)=f(n-1)+(f-2)。

我們把上面的分析用乙個公式總結如下:

/  1                          n=1

f(n)=      2                          n=2

\  f(n-1)+(f-2)               n>2

分析到這裡,相信很多人都能看出這就是我們熟悉的fibonacci序列。至於怎麼求這個序列的第n項,請參考

本面試題系列第16題

,這裡就不在贅述了。

跳台階問題

題目 乙個台階總共有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級台階的樓梯來說,我們...