力扣 面试题47. 礼物的最大价值 dp

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

力扣 面试题47. 礼物的最大价值 dp_第1张图片

思路: d p [ i ] [ j ] dp[i][j] dp[i][j]表示走到第 i i i行第 j j j列所能获得的最大价值,显然有: d p [ i ] [ j ] = m a x ( d p [ i ] [ j − 1 ] , d p [ i − 1 ] [ j ] ) + p r i c e [ i ] [ j ] dp[i][j]=max(dp[i][j-1],dp[i-1][j])+price[i][j] dp[i][j]=max(dp[i][j1],dp[i1][j])+price[i][j]答案就是 d p [ m − 1 ] [ n − 1 ] dp[m-1][n-1] dp[m1][n1]

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];
    }
};

你可能感兴趣的:(面试题,dp,动态规划)