动态规划
- 找出最佳路径,不能只比较右边和下边的项来来确定最大值,局部最佳!=全局最佳。
- 矩阵的第一行和第一列的路径礼物价值是确定的,(只能向右|下)。
- grid[i][j]= grid[i][j]=max(grid[i-1][j] ,grid[i][j-1])+grid[i][j]; 计算出到达i,j路径的最优解
- 理解只能向右或者向下,向右/下决定哪些行和列的路径礼物价值确定+max考虑的上一个位置
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param grid int整型vector<vector<>>
* @return int整型
*/
int maxValue(vector<vector<int> >& grid) {
// write code here
for(int i=1;i<grid.size();i++)
{
grid[i][0]=grid[i][0]+grid[i-1][0];
}
for(int i=0;i<grid.size();i++)
{
for(int j=1;j<grid[0].size();j++)
{
if(i==0)
{
grid[i][j]=grid[i][j-1]
+grid[i][j];
}
else{
grid[i][j]=max(grid[i-1][j]
,grid[i][j-1])+grid[i][j];
}
}
}
return grid[grid.size()-1][grid[0].size()-1];
}
};