一:题目
二:上码
class Solution {
public:/**思路:分析题意:爬到第一层楼有一种方法,爬到第二层楼有两种方法那么由第一层到第三层需要跨2步,由第二层到第三层需要跨一步;那么到第三层的方法可以由 到第一层和第二层推导出来(因为只剩下最后一步了)动态规划五步走1.确定dp数组以及下标的含义dp[i]表示到i层需要的步数 2.确定dp数组递推公式dp[i] = dp[i-1] + dp[i-2]3.确定dp数组如何初始化dp[1] = 1;dp[2] = 2;4.确定dp数组的遍历顺序从前向后遍历,因为后面的层数需要从前面推导出来5.举例推导dp数组n=5dp[5] = dp[4] + dp[3]dp[4] = dp[3] + dp[2]dp[3] = dp[2] + dp[1]dp[2] = 2dp[1] = 1**/int climbStairs(int n) {if(n == 1) return 1;if(n == 2) return 2;vector<int> dp(n+1);//开辟的范围为n+1,这样的下标就可以达到ndp[1] = 1;dp[2] = 2;for(int i = 3; i <= n; i++) {dp[i] = dp[i-1] + dp[i-2];}return dp[n];}
};