题解 | #礼物的最大价值#
礼物的最大价值
http://www.nowcoder.com/practice/2237b401eb9347d282310fc1c3adb134
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param grid int整型二维数组
* @return int整型
*/
private int[][] maxArr;
public int maxValue (int[][] grid) {
// write code here
if(grid == null) {
return 0;
}
maxArr = new int[grid.length][grid[0].length];
return maxValue(grid, 0, 0);
}
/**
* 返回从grid[i][j]到终点的最大价值
*
*/
private int maxValue (int[][] grid, int i, int j) {
// write code here
if (i == grid.length-1 && j == grid[0].length-1) {
return grid[grid.length-1][grid[0].length-1];
}
if(maxArr[i][j] != 0) {
return maxArr[i][j];
}
int max1 = 0;
if (j < grid[0].length - 1) { //向右走了
max1 = grid[i][j] + maxValue(grid, i, j+1);
}
int max2 = 0;
if (i < grid.length -1) { //向下走了
max2 = grid[i][j] + maxValue(grid, i+1, j);
}
int max = max1 > max2 ? max1 : max2;
maxArr[i][j] = max;
return max;
}
}
美的集团公司福利 800人发布