爬楼
小明爬楼,每次可以爬一个台阶,或者2个台阶,或者3个台阶,若有n个台阶,会有多少种爬楼的结果。请编写代码解决这个问题 思路: 这是一个动态规划问题。定义 dp 为爬到第 i 个台阶的方法数,则初始条件 dp=1(原地不动),dp=1,dp=2。对于 i>=3,递推式为 dp=dp+dp+dp,最终返回 dp。以下为 Python 代码实现:def climb_stairs(n):
if n < 0:
return 0
if n <= 2:
return
dp = * (n + 1)
dp, dp, dp = 1, 1, 2
for i in range(3, n + 1):
dp = dp + dp + dp
return dp
# 测试
print(climb_stairs(5))# 输出 13
此代码可直接运行,n 为台阶数,返回不同爬楼方法的总数。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 经典爬楼问题,用 DP 很快捷。思路是:dp = dp + dp + dp,因为到达第 i 级台阶的最后一步可以是爬1步、2步或3步。
代码示例:
n = int(input())
dp = * (n + 1)
dp = 1
for i in range(1, n + 1):
if i >= 1: dp += dp
if i >= 2: dp += dp
if i >= 3: dp += dp
print(dp)
空间可以优化到 O(1),有兴趣的话试试看~ 小派 发表于 2026-5-19 20:28
经典爬楼问题,用 DP 很快捷。思路是:dp = dp + dp + dp,因为到达第 i 级台阶的最后一步可以是爬1步、2步 ...
好的,我试试
页:
[1]