• 礼物的最大值


    题目:

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

    解答:

    使用动态规划,f(i,j)表示到达坐标[i,j]时能拿到的最大礼物总和。则当前格子f(i,j)可由左边格子f(i-1,j)或f(i,j-1)上面格子到达。因此,递归式子为: 

     f(i,j)=max(f(i1,j),f(i,j1))+gift[i,j]
     
     1 public class Solution {
     2 
     3     public static void main(String[] args) {
     4         int[][] values = {
     5             {1,2,3},
     6             {4,5,6},
     7             {7,8,9}
     8         };
     9 
    10         System.out.println(getMaxPathValue(values));
    11     }
    12 
    13     private static int getMaxPathValue(int[][] values) {
    14         if(values == null) {
    15             return 0;
    16         }
    17 
    18         int rows = values.length;
    19         if(rows <= 0) {
    20             return 0;
    21         }
    22 
    23         int cols = values[0].length;
    24         if(cols <= 0) {
    25             return 0;
    26         }
    27 
    28         int[][] maxValues = new int[rows][cols];
    29         for(int i = 0; i < rows; i++) {
    30             for(int j = 0; j < cols; j++) {
    31 
    32                 int left = 0;
    33                 int up = 0;
    34                 
    35                 if(i > 0) {
    36                     up = maxValues[i-1][j];
    37                 }
    38 
    39                 if(j > 0) {
    40                     left = maxValues[i][j-1];
    41                 }
    42 
    43                 maxValues[i][j] = Math.max(up, left) + values[i][j];
    44             }
    45         }
    46 
    47         return maxValues[rows-1][cols-1];
    48 
    49     }
    50 }

  • 相关阅读:
    发现另一种简便的完全居中css写法 element.style { width: 500px; height: 200px; background: #eee; position: absolute; margin: auto; top: 0; left: 0; bottom: 0; right: 0; }
    子网掩码随笔
    C# MVC网站自动由HTTP转为HTTPS
    c++中的void*
    权利的游戏
    字符串
    字符串
    权利的游戏 S0803
    加权有向图
    加权无向图
  • 原文地址:https://www.cnblogs.com/wylwyl/p/10387768.html
Copyright © 2020-2023  润新知