ネギ -- 746. 最小限のコストで階段を登る

トピックリンク: 746. 最小コストを使用して階段を登る - LeetCode 

まずトピックを分析します。

 

これは動的プログラミングの質問です。動的プログラミングの 5 つの部分に従ってこの質問を分析して答えることができます。

 

参照コード:

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