劍指offer 青蛙跳台階

2021-08-27 11:46:17 字數 757 閱讀 9794

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