思路:
使用动态规划的思想,dp[i]为可以有多少种方法跳到第i个台阶,第i个台阶可以由第i-1和第i-2台阶跳到,那跳到i的总方法应该是跳到i-1和i-2的方法和。状态转移为dp[i]=dp[i-1]+dp[i-2]。需要初始化dp[1],dp[2]。跳到第一个只有一种方法0-1,跳到第二个有两种方法0-1-2,0-2。所以dp[1]=1,dp[2]=2。
代码如下:
def jumpFloor(self, number):
# write code here
if number == 0:
z = 0
elif number == 1:
z = 1
else:
dp = [0 for _ in range(number+1)]
dp[0] = 1
dp[1] = 1
for i in range(2,number+1):
dp[i] = dp[i-1]+dp[i-2]
z = dp[number]
return z