博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
礼物的最大值
阅读量:4970 次
发布时间:2019-06-12

本文共 1474 字,大约阅读时间需要 4 分钟。

题目:

在一个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 }

 

转载于:https://www.cnblogs.com/wylwyl/p/10387768.html

你可能感兴趣的文章
socket tcp
查看>>
DataMining--Python基础入门
查看>>
单片机复位电路
查看>>
php json_decode失败,返回null
查看>>
获取单选按钮选中的值
查看>>
oracle 分页
查看>>
助教学期总结
查看>>
绘制基本 图形之矩形与多边形
查看>>
3-day3-list-truple-map.py
查看>>
Edit控件显示多行文字
查看>>
JS第二周
查看>>
dataTable.NET的search box每輸入一個字母進行一次檢索的問題
查看>>
Python 文件处理
查看>>
邻接表详解
查看>>
服务器一:分布式服务器结构
查看>>
迭代dict的value
查看>>
eclipse package,source folder,folder区别及相互转换
查看>>
Py 可能是最全面的 python 字符串拼接总结(带注释版)
查看>>
《Java程序设计实验》 软件工程18-1,3 OO实验2
查看>>
【Herding HDU - 4709 】【数学(利用叉乘计算三角形面积)】
查看>>