📅  最后修改于: 2023-12-03 15:41:38.189000             🧑  作者: Mango
当我们走楼梯时,一般的做法是一步一步往上走。但是,我们也可以一次跨两个台阶,这样走的话,到达第 N 级楼梯需要多少种不同的方法?
为了求解到达第 N 级楼梯的方法数,我们可以利用动态规划(DP)的思路,分别计算到达 i 级楼梯的方法数,最终得到到达 N 级楼梯的方法数。
由于我们可以一次跨两个台阶,那么到达第 i 级楼梯的方法数可以由到达第 i-1 级(一步跨一格)和到达第 i-2 级(一步跨两格)所得到。因此,我们可以得到以下递推式:
dp[i] = dp[i-1] + dp[i-2]
初始状态:
dp[0] = 1
dp[1] = 1
def climbStairs(n: int) -> int:
dp = [0] * (n+1)
dp[0] = 1
dp[1] = 1
for i in range(2, n+1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n]
本题可以利用动态规划求解,其中 dp[i] 表示到达第 i 级楼梯的方法数。递推式为 dp[i] = dp[i-1] + dp[i-2]。初始状态为 dp[0] = 1, dp[1] = 1。代码实现较为简单,可以借此加深对动态规划的理解。