題目:
乙隻青蛙一次可以跳上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 ...