剑指offer之礼物的最大价值

76 阅读1分钟

题目要求:(剑指 Offer 47. 礼物的最大价值)

本题与剑指 Offer 63. 股票的最大利润剑指 Offer 42. 连续子数组的最大和相类似,区别在于本题是二维数据,而42和63题是一维数据。

解题方法:动态规划

解题思路:计算出每一步的最大值,而每一步的最大值=上一步的最大值+当前步

代码如下:

var maxValue = function(grid) {
//边界条件
    if(grid.length==0){
        return 0
    }
let row=grid.length
let col=grid[0].length
//将两个边界判断拿出来
for(let i=1;i<col;i++){
grid[0][i]=grid[0][i]+grid[0][i-1]
}
for(let j=1;j<col;j++){
grid[j][0]=grid[j][0]+grid[j-1][0]
}
for(let i=0;i<row;i++){
    for(let j=0;j<col;j++){
        if(i==0||j==0){
            continue
        }
        grid[i][j]=grid[i][j]+Math.max(grid[i-1][j],grid[i][j-1])

    }
}
return grid[row-1][col-1]
}

解题总结:此题用dfs会出现错误,最好最简单还是用动态规划来解决,计算走到每一步做能达到的最大价值。