T1:leetcode.746 使用最小花费爬楼梯
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
vector<int> dp(cost.size());
dp[0] = cost[0];
dp[1] = cost[1];
for (int i = 2; i < cost.size(); i++) {
dp[i] = min(dp[i-1], dp[i-2]) + cost[i];
}
return min(dp[cost.size()-1], dp[cost.size()-2]);
}
};
/*
1.确定dp[i]的意义 爬上第i层楼梯的花费的最小体力(最顶层不用花费)
2.确定递推关系 dp[i] = dp[i-1] + dp[i-2]
3.dp初始化 dp[0] = cost[0] dp[1] = cost[1]
4.确定遍历顺序 从i = 2 到 i = cost.size() - 1
5.举例说明
*/