剑指 Offer 47. 礼物的最大价值
剑指 Offer 47. 礼物的最大价值
解题思路
因为对于一个点,只可能是从上方或左方累加过来,那么选择值最大的那个方向累加即可。
转移方程:
f[i][j]+=max(f[i-1][j],f[i][j-1]);
在原矩阵上操作,最后返回最右下角的数即可。
代码
class Solution {
public:
int maxValue(vector<vector<int> >& grid) {
for(int i=0;i<grid.size();i++)
{
for(int j=0;j<grid[0].size();j++)
{
if(i==0&&j!=0)
{
if(grid[i][j-1]>0)
{
grid[i][j]+=grid[i][j-1];
}
}else if(i!=0&&j==0)
{
if(grid[i-1][j]>0)
{
grid[i][j]+=grid[i-1][j];
}
}else if(i!=0&&j!=0)
{
int max=grid[i-1][j]>grid[i][j-1]?grid[i-1][j]:grid[i][j-1];
if(max>0)
{
grid[i][j]+=max;
}
}
}
}
return grid[grid.size()-1][grid[0].size()-1];
}
};

浙公网安备 33010602011771号