欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-23 09:20:42
剑指 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

相关标签: 基础算法