当前位置: 移动技术网 > IT编程>网页制作>HTML > 剑指 Offer 47. 礼物的最大价值

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

2020年08月10日  | 移动技术网IT编程  | 我要评论
剑指 Offer 47. 礼物的最大价值在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?解题思路:1. 从第一个点到最后一个点依次计算每个格子 的最大值;2. 每个格子的最大值 为 上面一个点或者下面一个点的最大值与当前点的和;3. 注意边界条件: 第一行和第一列;/** * @p.

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

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

解题思路:

1. 从第一个点到最后一个点依次计算每个格子 的最大值;

2. 每个格子的最大值 为 上面一个点或者下面一个点的最大值与当前点的和;

3. 注意边界条件: 第一行和第一列;

 

/**
 * @param {number[][]} grid
 * @return {number}
 */
var maxValue = function(grid) {
    let colength = grid[0].length;
    let rowLength = grid.length;

    const getMaxNeighbors = (row, col) => {
        if(row === 0 && col ===0) return 0;
        if(row === 0) return grid[row][col-1];
        if(col === 0) return grid [row-1][col];
        return Math.max(grid[row][col-1], grid[row-1][col]);
    }

    for(let row=0; row< rowLength; row++){
        for(let col = 0;col<colength;col++){
            grid[row][col] = grid[row][col] + getMaxNeighbors(row,col);
        }
    }

    return grid[rowLength-1][colength-1]
    
};

 

本文地址:https://blog.csdn.net/hupian1989/article/details/107894086

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网