思路:
第i个台阶可以从前i-1个台阶分别跳过了,所以状态转移为dp[i]=sum(dp[0],dp[1],…,dp[i-1])。dp[0]=1,表示所有都可以直接从初始位置跳过来,dp[1]只能从0跳上了,所以dp[1]=1。其他的均可以由状态转移获得。
代码如下:
def jumpFloorII(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] = 0
for j in range(i):
dp[i] = dp[i]+dp[j]
z = dp[number]
return z