📌  相关文章
📜  求到达楼梯第 K 步的方法数(1)

📅  最后修改于: 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 为楼梯的台阶数目。