剑指—JZ9变态跳台阶

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

解题思路

记忆化递归

之前的题目是一次只能跳1或者2个台阶,现在是可以跳n个台阶,因此可以使用一个循环来分别加n-1,n-2, n-3,...,n - n。

class Solution:
    def __init__(self):
        self._dict = {}

    def jumpFloorII(self, number):
        def dfs(n):
            if n == 0:
                return 1
            if n < 0:
                return 0
            if n == 1:
                return 1
            if n in self._dict:
                return self._dict[n]
            self._dict[n] = 0
            for i in range(1, number + 1):
                self._dict[n] += dfs(n - i)
            return self._dict[n]
        res = dfs(number)
        return res

S = Solution()
print(S.jumpFloorII((5)))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章