其他分享
首页 > 其他分享> > 剑指 Offer 47. 礼物的最大价值

剑指 Offer 47. 礼物的最大价值

作者:互联网

剑指 Offer 47. 礼物的最大价值

在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?

示例 1:

输入: 
[
  [1,3,1],
  [1,5,1],
  [4,2,1]
]
输出: 12
解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物
===================================================
动态规划,时间复杂度需要O(mn),空间复杂度为O(1)
class Solution {
public:
    int maxValue(vector<vector<int>>& grid) {
        for (int i = 0; i < grid.size(); i++) {
            for (int j = 0; j < grid[i].size(); j++) {
                if (i - 1 >= 0 && j - 1 >= 0) {
                    if (grid[i - 1][j] > grid[i][j - 1])
                        grid[i][j] += grid[i - 1][j];
                    else
                        grid[i][j] += grid[i][j - 1];
                }
                else if (i - 1 >= 0) {
                    grid[i][j] += grid[i - 1][j];
                }
                else if (j - 1 >= 0) {
                    grid[i][j] += grid[i][j - 1];
                }
            }
        }
        return grid[grid.size() - 1][grid[grid.size()-1].size()-1];
    }
};

 

标签:棋盘,Offer,int,47,else,grid,礼物,size
来源: https://www.cnblogs.com/4jiu/p/15904324.html