力扣 面試題47. 禮物的最大價值 dp

https://leetcode-cn.com/problems/li-wu-de-zui-da-jie-zhi-lcof/

在這裏插入圖片描述

思路:dp[i][j]dp[i][j]表示走到第ii行第jj列所能獲得的最大價值,顯然有:dp[i][j]=max(dp[i][j1],dp[i1][j])+price[i][j]dp[i][j]=max(dp[i][j-1],dp[i-1][j])+price[i][j]答案就是dp[m1][n1]dp[m-1][n-1]

class Solution {
public:
    int maxValue(vector<vector<int>>& grid) {
        int m=grid.size();
        if(!m)
            return 0;
        vector<vector<int>> dp(m);
        int n=grid[0].size();
        for(int i=0;i<m;i++)
            dp[i].resize(n);
        dp[0][0]=grid[0][0];
        for(int i=1;i<n;i++)
            dp[0][i]=dp[0][i-1]+grid[0][i];
        for(int i=1;i<m;i++)
            dp[i][0]=dp[i-1][0]+grid[i][0];
        for(int i=1;i<m;i++)
        {
            for(int j=1;j<n;j++)
                dp[i][j]=max(dp[i][j-1],dp[i-1][j])+grid[i][j];
        }
        return dp[m-1][n-1];
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章