礼物的最大价值

57 阅读1分钟

题目位置: leetcode-cn.com/problems/li…

从棋盘的左上角开始拿格子里的礼物,并每次 向右 或者 向下 移动一格、直到到达棋盘的右下角。
根据题目说明,易得某单元格只可能从上边单元格或左边单元格到达。

DP的思想:局部最优 ->整体最优

public int maxValue(int[][] grid) {
        int m = grid.length;
        int n = grid[0].length;
        //递归超时 使用dp 局部最优 -> 整体最优
        for(int i = 0; i < m; i++){
            for(int j = 0; j < n; j++){
                if(i == 0 && j == 0) continue;
                if(i == 0) grid[i][j] += grid[i][j - 1];
                else if(j == 0) grid[i][j] += grid[i - 1][j];
                else grid[i][j] += Math.max(grid[i][j - 1], grid[i - 1][j]);
            }
        }
        return grid[m - 1][n - 1];
    }