AcWing 60. 礼物的最大价值
原题链接
中等
作者:
adamXu
,
2020-10-07 23:14:45
,
所有人可见
,
阅读 353
class Solution {
public:
int getMaxValue(vector<vector<int>>& grid) {
//利用dp[i][j] 记录从左上走到i,j位置的最大值,则初始dp[0][j],dp[j][0]都为0
//状态转移方程为dp[i][j] = max(dp[i - 1][j],dp[i][j - 1]) + grid[i - 1][j - 1]
//-1是因为状态从1,1开始算起,这样可以免去边界判断
int n = grid.size(),m = grid[0].size();
vector<vector<int>> dp(n + 1,vector<int>(m + 1));
for(int i = 1;i <= n;++i)
for(int j = 1;j <= m;++j)
dp[i][j] = max(dp[i - 1][j],dp[i][j - 1]) + grid[i - 1][j - 1];
return dp[n][m];
}
};