一只青蛙一次可以跳上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]