二维dp,轻轻松松
class Solution {
public:
int getMaxValue(vector<vector<int>>& grid) {
size_t m=grid.size();
if(m==0){
return 0;
}
size_t n=grid[0].size();
vector<vector<int> > dp(m,vector<int>(n,0));
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(i==0&&j==0){
dp[i][j]=grid[i][j];
continue;
}
if(i==0){
dp[i][j]=grid[i][j]+dp[i][j-1];
continue;
}
if(j==0){
dp[i][j]=grid[i][j]+dp[i-1][j];
continue;
}
dp[i][j]=max(dp[i-1][j],dp[i][j-1])+grid[i][j];
}
}
return dp[m-1][n-1];
}
};