乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法(先後次序不同算不同的結果)。這是一道比較簡單的動態規劃問題。
n=1時,青蛙只能跳一次,即num=1
n=2時,青蛙可以有兩種方法,1+1,2;即num=2
n=3時,青蛙可以有三種方法,1+1+1,1+2,2+1;即num=3=(2+1)
n=4時,青蛙可以有五種方法,1+1+1+1, 1+1+2, 1+2+1,2+1+1,2+2;即num=5=(3+2)
設num[n] = num[n-1] + num[n-2],可以看出這是乙個斐波那契數列,因為num[n]的取值只與num[n-1]和num[n-2]有關,因此我們設乙個num,長度為2。**如下:
class solution:
def jumpfloor(self, number):
# write code here
num = [1,1]
if number==0:
return 0
if number==1:
return 1
for i in range(2,number+1):
if i%2==0:
num[0] = num[0]+num[1]
else:
num[1] = num[0]+num[1]
return num[number%2]
劍指offer 青蛙跳台階
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 public class solution if target 1 if target 2 return jumpfloor target 1 jumpfloor target 2 乙...
劍指offer 青蛙跳台階I 青蛙跳台階 II
i 題目 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 斐波那契數列變體,關鍵是找出遞推公式。假設跳n級台階有f n 中跳法,容易發現f 1 1,f 2 2 n 2時,如果最後一次跳一級台階,一共有f n 1 種跳法,如果最後一次...
劍指offer 青蛙跳台階(C 實現)
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 和斐波那契數列的思路完全一致。假設有n nn個台階,當n 3 n ge 3 n 3時,青蛙第一次可以跳1 11個台階,則剩下的n 1 n 1 n 1個台階一共有f n 1 f n 1 ...