一,题目描述
二,解题思路
动态规划
动规五部曲:
1. 确认dp数组以及下标含义
2. 推导递推公式
3. 确认dp数组如何初始化
4. 确认遍历顺序
5. 打印dp数组
dp数组含义:到第i层的方法数目
下标含义:层数
递推公式:dp[i] = dp[i-1] + dp[i-2]
dp数组初始化:由于第1层与第2层方法固定,且从第3层开始可以通过前两层推出,所以dp[1]=1,dp[2]=2
遍历顺序与打印dp数组放在代码中
三,代码实现
class Solution {
public:int climbStairs(int n) {int *dp = new int[n+1];dp[1] = 1;dp[2] = 2;for(int i=3; i<=n; i++) //遍历顺序从第3层开始{dp[i] = dp[i-1] + dp[i-2];}for(int i = 1; i<=n; i++) //打印dp数组{cout << dp[i] <<" ";}cout << endl;}
};