题解 | #礼物的最大价值#

礼物的最大价值

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;
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务