746使用最小花費爬樓梯
阿新 • • 發佈:2019-02-17
class Solution { public: int minCostClimbingStairs(vector<int>& cost) { //動態規劃,確定好狀態,dp[i]表示跳到i階花的代價 //所以最後爬完樓梯花費代價是dp[n],注意不是n-1,因為需要爬完整個樓梯 //狀態轉移方程:dp[i] = min(dp[i-2]+cost[i-2],dp[i-1]+cost[i-1]) //因為i階要麼從i-1跳過來,要麼從i-2跳到i //邊界條件,dp[0],dp[1] = 0,因為可以直接從他們開始,而不是跳到0,1 vector<int> dp(cost.size()+1,0); dp[0] = 0; dp[1] = 0; for(int i = 2;i<=cost.size();++i) { dp[i] = min(dp[i-2]+cost[i-2],dp[i-1]+cost[i-1]); } return dp[cost.size()]; } };