一道简单的DP题
思路就是看当前状态受前面的哪些状态影响,在本题中,一次可以走1或2步,所以DP方程为:
dp[i] = cost[i] + min(dp[i-2], dp[i-1]);
还有一个需要注意的地方就是return的时候返回min(dp[n-1], dp[n-2])
代码如下:
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int dp[1000];
dp[0] = cost[0];
dp[1] = cost[1];
for(int i = 2; i<cost.size(); ++i)
{
dp[i] = cost[i] + min(dp[i-2], dp[i-1]);
}
return min(dp[cost.size()-1], dp[cost.size()-2]);
}
};