劍指—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)))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章