题解 | #礼物的最大价值#

礼物的最大价值

http://www.nowcoder.com/practice/2237b401eb9347d282310fc1c3adb134

```/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param grid int整型二维数组 
 * @return int整型
 */
function maxValue( grid ) {
    // write code here
    // 递归:对于某一个坐标的路线最大值,就是这个坐标值加他的上面或者左边坐标的最大值(取大)。
    // 首先构造一个和grid矩阵维度一致的矩阵
    let dp = [];
    let rowNum = grid.length;
    let cowNum = grid[0].length;
    for (let i = 0; i < rowNum;i++) {
        dp[i] = []
        for (let j = 0;j < cowNum;j++) {
            dp[i][j] = 0
        }
    }
    //此时dp每个位置已填了0,下面给dp的第一行和第一列填充路径最大值
    //左上角
    dp[0][0] = grid[0][0]
    //第一列
    for(let i = 1;i<rowNum;i++){
        dp[i][0]=grid[i][0]+dp[i-1][0] //递归本质一种思想,实现的像是不一定是函数,变量的赋值也可以递归
    }
    //第一行
    for(let j = 1;j<cowNum;j++){
        dp[0][j]=grid[0][j]+dp[0][j-1]
    }
    //递归其他的路径最大值,这里递归的终点就是i=0或者j=0,即上面已经给dp赋过的值
    for(let i = 1;i<rowNum;i++){
        for(let j=1;j<cowNum;j++){
            dp[i][j]= Math.max(grid[i][j]+dp[i-1][j],grid[i][j]+dp[i][j-1])
        }
    }
    return dp[rowNum-1][cowNum-1] //返回dp右下角的值即为最大路径值
}
    
module.exports = {
    maxValue : maxValue
};
全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
评论
2
1
分享
牛客网
牛客企业服务