剑指 Offer 47. 礼物的最大价值
思路
经典动态规划
初始化首行首列,dp[i][j]=max(dp[i-1][j],dp[i][j-1])
代码
public int maxValue(int[][] grid) {
int m=grid.length,n=grid[0].length;
int [][]dp=new int[m][n];
dp[0][0]=grid[0][0];
for(int i=1;i<m;i++)
dp[i][0]=grid[i][0]+dp[i-1][0];
for(int j=1;j<n;j++)
dp[0][j]=grid[0][j]+dp[0][j-1];
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1])+grid[i][j];
}
}
return dp[m-1][n-1];
}