📅  最后修改于: 2023-12-03 15:11:02.668000             🧑  作者: Mango
一个楼梯有 n 级台阶,你可以一次上 1 级,2 级或 3 级台阶。求到达楼梯第 k 步的方法数。
这个问题有多种解法,其中一种比较简单有效的方法是使用动态规划。
我们设 f(i) 表示上到第 i 级台阶的方法数。那么 f(k) 就是我们要求的答案。
根据题意,我们可以得到状态转移方程:
f(i) = f(i-1) + f(i-2) + f(i-3)
边界条件:
当 i < 0 时,f(i) = 0; 当 i = 0 时,f(i) = 1;
最终答案为 f(k)。
以下是使用 Python 实现上述解法的代码片段:
def stair_count(k):
if k < 0:
return 0
if k == 0:
return 1
dp = [0] * (k + 1)
dp[0], dp[1], dp[2] = 1, 1, 2
for i in range(3, k + 1):
dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
return dp[k]
使用动态规划方法解决此问题的时间复杂度为 O(n),其中 n 为楼梯的台阶数目。