【题目】
三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。
示例1:
输入:n = 3
输出:4
说明: 有四种走法
示例2:
输入:n = 5
输出:13
提示:
n范围在[1, 1000000]之间
【代码】
【方法1:dp】

cost_n=cost_n-1+cost_n-2+cost_n-3
class Solution:
def waysToStep(self, n: int) -> int:
dp=[0,1,2,4]
for i in range(4,n+1):
dp.append((dp[i-1]+dp[i-2]+dp[i-3])%1000000007)
return dp[-1] if n>=4 else dp[n]
【写法2:dp】空间压缩

class Solution:
def waysToStep(self, n: int) -> int:
x,y,z=1,2,4
if n==1:return x
if n==2:return y
if n==3:return z
for i in range(4,n+1):
x,y,z=y,z,(x+y+z)%1000000007
return z

本文探讨了一种算法,利用动态规划解决孩子上楼梯的问题,给出了两种代码实现,适用于n阶台阶的不同走法,结果需对1000000007取模。示例包括n=3和5的情况。
304

被折叠的 条评论
为什么被折叠?



