c++冬冬爬楼梯动态规划
时间: 2023-09-22 12:12:01 浏览: 101
冬冬爬楼梯动态规划问题是一个经典的动态规划问题,假设冬冬要爬n个台阶,每次只能爬1个或2个台阶,问他有多少种不同的爬法。
解决这个问题可以使用动态规划的思想,我们可以定义一个数组dp,其中dp[i]表示爬到第i个台阶的不同爬法数量。
那么,对于dp[i]来说,它的值可以由dp[i-1]和dp[i-2]转移得到,因为每次只能爬1个或2个台阶。所以,状态转移方程为:
dp[i] = dp[i-1] + dp[i-2]
边界条件为dp[1] = 1,dp[2] = 2,因为只有一个台阶时只有1种爬法,有两个台阶时有2种爬法。
最终,dp[n]就是冬冬爬到第n个台阶的不同爬法数量。
下面是Python实现代码:
```
def climbStairs(n: int) -> int:
if n <= 2:
return n
dp = [0] * (n+1)
dp[1] = 1
dp[2] = 2
for i in range(3, n+1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n]
```
时间复杂度为O(n),空间复杂度为O(n)。
阅读全文