面试题 08.01. 三步问题

 分析:

赋初值本质:状态转移需要状态依赖,防止下标越界

分析题目,建立初始状态:

  到第i阶楼梯有f[i]种方式

答案:

  f[n]

状态转移:

  f[i] = f[i-1] + f[i-2] + f[i-3]

这里需要考虑到n小于等于3的时候,f[0]=1, f[1]=1,f[2]=2

代码:

class Solution(object):
    def waysToStep(self, n):
        """
        :type n: int
        :rtype: int
        """
        # 到i阶楼梯有f[i]种方式
        # f[n]
        # f[i]=f[i-1]+f[i-2]+f[i-3]
        if n < 3 :
            return n
        f=[0 for i in range(n+1)]
        f[0]=1
        f[1]=1
        f[2]=2
        for i in range(3,n+1):
            f[i]=(f[i-1]+f[i-2]+f[i-3])%1000000007

        return f[-1]

 

posted @ 2023-04-25 17:08  猥琐丑八怪  阅读(17)  评论(0)    收藏  举报