Day8 青蛙跳台階問題

2021-10-16 22:32:06 字數 1001 閱讀 4014

題目:

乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法。

答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。

leetcode原題鏈結

思路:

跳上n級台階的方法有f(n)種

反推,假設現在青蛙已經跳上n級台階了,有「2」種跳上n級台階的方法——從n-1級台階起跳,跳一步;從n-2級台階起跳,跳兩步。

即:f(n)=f(n-1)+f(n-2)

可以發現,這道題和上一題【斐波那契數列】是一樣的。

f(0)=1【由leetcode給出的示例得知】

f(1)=1

f(2)=2【已符合遞推公式】

**:

披著青蛙皮的斐波那契數列

class

solution

:def

numways

(self, n:

int)

->

int:

f=#建立字典f

f[0]

=1f[1]

=1if n>1:

for i in

range(2

,n+1):

#注意這裡range的起點是2,而非0

f[i]

=f[i-1]

+f[i-2]

return f[n]

%1000000007

#題中要求 答案取模

tips:

倒數第三行**若寫成for i in range(n+1):,即for i in range(0,n+1)會報錯【keyerror: -1】。

因為i=0時,執行**f[0]=f[-1]+f[-2]。-1和-2都是錯誤的key值。

青蛙跳台階問題

題目 乙隻青蛙一次可以跳上 1 級台階,也可以跳上2 級。求該青蛙跳上乙個n 級的台階總共有多少種跳法。我的思路 最開始我的思路是把這個看成是乙個數學問題,n i 1 k 2先把所有可能滿足這個公式的i和k求出來。然後在對i和k做排列組合。很明顯i的範圍應該是0 public int jumpflo...

青蛙跳台階問題

1 乙隻青蛙一次可以跳上 1 級台階,也可以跳上2 級。求該青蛙跳上乙個n 級的台階總共有多少種跳法。2 乙隻青蛙一次可以跳上1級台階,也可以跳上2 級 它也可以跳上n 級,此時該青蛙跳上乙個n級的台階總共有多少種跳法?分析 1 當n 1,只有1中跳法 當n 2時,有兩種跳法 當n 3 時,有3種跳...

青蛙跳台階問題

問題一 有乙隻青蛙,需要跳上100級台階。青蛙每次可以調一級或者兩級台階。問青蛙有多少種方式可以跳100級台階。思路 逆推 當青蛙站在100級台階上時,那它跳上100級時有可能是從99級跳一級上來的,也可能是從98級跳兩級跳上來的 從98級跳兩個一級包括在從99級跳一級情況內,所以不予考慮 所以f ...