資料結構與演算法 青蛙跳台階變種

2021-08-19 13:17:26 字數 688 閱讀 4155

完美世界演算法崗筆試題。

乙隻青蛙一次可以跳上1級台階,也可以跳上2級,但年幼的青蛙不能連續跳2級,求年幼青蛙跳上乙個n級的台階總共有多少種方法?

相比原問題多了乙個限制條件,但整體思路類似。

(下面所有解法都不考慮資料溢位問題)

解法一:遞迴

假設n級台階有f(n)種跳法,則有 f(

n)=該解法比較容易理解,但顯然遞迴解法效率是很低的,我們很容易想到利用動態規劃來解決它。

解法二:動態規劃

利用陣列儲存每次計算得到的值,避免重複計算。

主要思路與解法一類似,只不過從遞迴計算變成了迭代的陣列計算。

這裡給出自底向上的動態規劃解法:

int jump(int n) 

for (int i = 3; i <= n; ++i)

return v[n][0];

}

顯然時間複雜度為o(n)。

解法三:組合數學

把問題抽象成簡單數學模型,假設有x次2級跳,y次1級跳,則x、y必定滿足如下關係式:

int jump(int n)

return total;

}時間複雜度o(n)。

演算法 青蛙跳台階

1.乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。典型的斐波那契數列 2.青蛙跳台階plus版本 乙隻青蛙一次可以跳上1級台階,也可以跳上2級 它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。關於本題,前提是n個台階會有一次n階的跳法。分析如...

青蛙跳台階演算法分析

青蛙跳台階問題在面試中經常會被問到,如果你之前沒聽過這個演算法問題,那麼在面試短時間內能給出完整的答案還是有一定的難度的,但是其實也並不算很難,看完這篇文章,相信你會恍然大悟的。乙隻青蛙一次可以跳一級台階,也可以一次跳兩級台階,現在有 n 級台階,問青蛙一共有多少種跳法?咋一看到這種問題,好像沒有什...

演算法練習 青蛙跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 看過有網上有特解的方法,但是我感覺不合適,因為想解法應該是找到普遍的規律才應該算是中規中矩。當不知道解題思路的就可以先將前幾次,比如說有 1,2,3,4,5級台階的跳法算出來,比較簡單...