//最开始想的时候,思考dp[i]推导dp[i+1],dp[i+2],dp[i]定义为爬到当前楼梯的最小值,但是
//dp[i+1]收到dp[i]和dp[i-1],的影响,dp[i+2],也是,但如果思考dp[i-1]和dp[i-2]对dp[i]的影响
//dp[i-1]和dp[i-2]都是前面定义好的最小值,这样我只需要考虑后面的,影响因素少了
//另外,对dp[0]和dp[1]的初始话也很重要,
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
vector<int>dp(2500, 0);
dp[0] = 0;
dp[1] = 0;
for (int i = 2; i <= cost.size(); i++)
{
dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
}
return dp[cost.size()];
}
};