变态跳台阶
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路
这个问题和 跳台阶 很类似,只是将青蛙每次跳跃阶数的选择从两种扩展到了n种。
问题可以转换为:当前台阶的跳法种数 = 当前台阶之前的所有台阶的跳法之和
即:f (n) = f (n-1) + f (n-2) + f (n-3) + … + f (2) + f (1)
代码
# -*- coding:utf-8 -*-
class Solution:
def jumpFloorII(self, number):
# write code here
if number < 3:
return number
a = [0,1,2]
for i in range(3, number+1):
a.append(sum(a)+1)
return a[number]