力扣 -- 746. 使用最小花费爬楼梯

题目链接:746. 使用最小花费爬楼梯 - 力扣(LeetCode) 

先分析题目:

这是一道动态规划的题,我们可以根据动态规划五部曲分析解答这道题。

 

参考代码:

class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        
        int n = cost.size();

        //由于我们要返回的是dp[n],所以需要开n+1个空间的dp表(数组)
        vector<int> dp(n+1);

        //填表前需要先初始化dp[0],dp[1]的值,以免填表时越界
        dp[0]=dp[1]=0;

        int i=0;
        //dp[0],dp[1]已经填好了,所以dp表可以从i=2位置开始填
        //记得i一定要取等于n,因为dp[n]才是到达楼顶的最低费用
        for(i=2;i<=n;i++)
        {
            //状态转移方程,取最近一步到达dp[i]位置的两种途径的最小值
            dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
        }

        //最后返回dp[n]即可
        return dp[n];
    }
};

         这个动态规划的题难就难在分析上,如果能把它分析清楚,代码写起来就几行,如果没有画图分析,就算给你代码真的也不一定能看懂。

        好了,以上就是这道动态规划的解题过程,希望对你有所帮助,如果感觉到有所收获的话,那就点点小心心点点关注呗,后期还会持续更新相关的动态规划的题目哦,我们下期不见不散!!!

猜你喜欢

转载自blog.csdn.net/weixin_70056514/article/details/131147786
今日推荐