zoukankan      html  css  js  c++  java
  • 剑指offer 47:礼物的最大价值

    package com.example.lettcode.offer;
    
    /**
     * @Class MaxValue
     * @Description 剑指offer47 礼物的最大价值
     * 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。
     * 你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、
     * 直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?
     * <p>
     * 示例 1:
     * 输入:
     * [
     *   [1,3,1],
     *   [1,5,1],
     *   [4,2,1]
     * ]
     * 输出: 12
     * 解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物
     * <p>
     * 提示:
     * 0 < grid.length <= 200
     * 0 < grid[0].length <= 200
     * @Author 
     * @Date 2020/7/18
     **/
    public class MaxValue {
    
    }
    
    /**
     * 动态规划
     */
    public static int maxValue(int[][] grid) {
    	if (grid == null || grid.length == 0) return 0;
    	int row = grid.length;
    	int col = grid[0].length;
    	// dp[i][j] 表示到达grid[i][j]时所能取得的最大价值
    	int[][] dp = new int[row+1][col+1];
    	for (int i = 1; i <= row; i++) {
    		for (int j = 1; j <= col; j++) {
    			dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]) + grid[i-1][j-1];
    		}
    	}
    	return dp[row][col];
    }
    
    /**
     * 动态规划:利用滚动数组优化空间
     */
    public static int maxValue(int[][] grid) {
    	if (grid == null || grid.length == 0) return 0;
    	int col = grid[0].length;
    	// dp[j] 表示到达grid[i][j]时所能取得的最大价值
    	int[] dp = new int[col+1];
    	for (int i = 1; i <= grid.length; i++) {
    		for (int j = 1; j <= col; j++) {
    			dp[j] = Math.max(dp[j], dp[j - 1]) + grid[i-1][j-1];
    		}
    	}
    	return dp[col];
    }
    
    // 测试用例
    public static void main(String[] args) {
    	int[][] grid = new int[][]{{1,3,1},{1,5,1},{4,2,1}};
    	int ans = maxValue(grid);
    	System.out.println("MaxValue demo01 result:" + ans);
    }
    
  • 相关阅读:
    [C#] 多线程总结(结合进度条)
    [Winform] DataGridView 中 DataGridViewComboBox 的可编辑
    [Tool] 仿博客园插入代码的 WLW 插件
    [C#] 获取打印机列表
    [Access] C# 通过 COM 组件访问 Access 文件
    [Excel] 打印设置
    [Q&A] 应用程序清单生成失败
    [Excel] Worksheet.PasteSpecial
    canvas裁剪图片,纯前端
    javascript将base64编码的图片数据转换为file并提交
  • 原文地址:https://www.cnblogs.com/fyusac/p/13336153.html
Copyright © 2011-2022 走看看