楼梯有 n (30 > n > 0) 阶台阶,上楼时可以一步上 1 阶,也可以一步上 2 阶,也可以一步上 3 阶,编程计算共有多少种不同的走法。
时间: 2024-03-03 08:49:15 浏览: 126
问题描述:有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。
5星 · 资源好评率100%
好的,这是一个动态规划的问题。我们可以用一个数组 dp 来记录到达每一个台阶的不同走法数目。假设 dp[i] 表示到达第 i 阶台阶的不同走法数目,那么有以下状态转移方程:
dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
其中,dp[1] = 1, dp[2] = 2, dp[3] = 4。因为只有 1 阶台阶时只有一种走法,2 阶台阶时有两种走法(一步一步或者一次跨两步),3 阶台阶时有四种走法(分别为 1+1+1、1+2、2+1、3)。
最终的答案就是 dp[n]。下面是 Python 代码实现:
```python
n = int(input())
dp = [0] * (n + 1)
dp[1] = 1
dp[2] = 2
dp[3] = 4
for i in range(4, n+1):
dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
print(dp[n])
```
阅读全文