題目:一只青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
思路:青蛙跳n級臺階的跳法相當(dāng)于青蛙跳青蛙跳n-1級臺階后再跳1級,或者青蛙跳n-2級臺階后再跳2級....或者青蛙跳2級后再跳n-2級,或者跳1級后再跳n-1級,或者直接跳n級。因此 f(x) = f(x-1) + f(x-2) + f(x-3) + .... + f(2) + f(1) + 1, n>=2,當(dāng)n<2時的情況易得。
Python代碼如下:
class Solution:
def jumpFloorII(self, number):
# write code here
dp = [0, 1, 2]
for floor in range(3, number+1):
dp.append(0)
for i in range(floor):
dp[floor] += dp[i]
dp[floor] += 1
return dp[number]