class Solution {
public:
int getMaxValue(vector<vector<int>>& grid) {
int n = grid.size();
int m = grid[0].size();
//第一列
for(int i = 1; i < n; i++)
grid[i][0] += grid[i - 1][0];
//第一行
for(int j = 1; j < m; j++)
//只能从上面过来
grid[0][j] += grid[0][j - 1];
for(int i = 1; i < n; i++)
//只能从左边过来
for(int j = 1; j < m; j++)
//每个格子只从上面过来或者左边过来,从中选择价值大的
grid[i][j] += max(grid[i - 1][j], grid[i][j - 1]);
return grid[n - 1][m - 1];
}
};