每日一题day5
题目描述
求解思路
动态规划,楼梯上的数字理解成离开这一阶梯需要体力值
dp[i]表示达到阶梯i的最小体力值
n级阶梯从 0 ~ n-1 编号,最后求dp[n]的值
状态转移方程:
dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]),i>2时
dp[0]=dp[1]=0,可以选0或者1为起点
C++实现代码
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
vector<int> dp;
dp.push_back(0);
dp.push_back(0);
for(int i = 2;i <= cost.size();i++)
dp.push_back(min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]));
return dp.back();
}
};