动态规划代码 加注释

动态规划的原理就不多讲了,网上一大堆,google一下就明白了,直接上代码


 1 public class DynamicPlan {
2 // 100 个人 挖 5 个矿
3 private static int peopleCount=100;
4 private static int poolCount=5;
5 // 挖每个矿时需要的人数
6 private static int[] peopleNeed={77,22,29,50,99};
7 // 每个矿可以挖出来的金币数
8 private static int[] goldEach={92,22,87,46,90};
9 // 挖矿中间过程的备忘
10 private static Integer[][] backup=new Integer[100][5];
11 public static void main(String[] args) {
12 for(int i=0;i<peopleCount;i++) {
13 for(int j=0;j<poolCount;j++) {
14 backup[i][j]=-1;
15 }
16 }
17 int max=getMaxGold(peopleCount-1,poolCount-1);
18 System.out.println(max);
19 }
20
21 public static int getMaxGold(int peopleCount,int poolNum) {
22 int maxGold=0;
23 //m个人挖n个矿时金币数的备忘,遇到相同数量时直接得到结果
24 if(backup[peopleCount][poolNum]!=-1) {
25 maxGold=backup[peopleCount][poolNum];
26 } else if(poolNum==0) {
27 // 只剩下一个矿,人数够,金币数为矿值,人数不够为0
28 if(peopleCount>=peopleNeed[poolNum]) {
29 maxGold=goldEach[poolNum];
30 } else {
31 maxGold=0;
32 }
33 } else if(peopleCount>=peopleNeed[poolNum]) {
34 // 不是只剩下一个矿,且人数大于挖当前矿需要的人数,
35 // 挖当前矿时,获得的最大金币为 剩下的人数减去挖当前矿需要的人数 去挖 除去当前矿剩下的矿获得的金币值 加上当前矿能挖出的金币值
36 // 不挖当前矿时,获得的最大金币为 当前剩下的所有人 去挖 除去当前矿剩下的矿获得的金币值
37 // 两者中的最大值为 剩余人数挖剩余矿时获得金币的最大值
38 maxGold=Math.max(getMaxGold(peopleCount-peopleNeed[poolNum],poolNum-1)+goldEach[poolNum],
39 getMaxGold(peopleCount,poolNum-1));
40 } else {
41 // 不是只剩下一个矿,剩余人数小于挖当前矿需要的人数,
42 // 当前剩下的所有人数去挖除去当前矿剩下的矿所得的金币数
43 maxGold=getMaxGold(peopleCount,poolNum-1);
44 }
45 // 将当前人数挖当前矿数获得金币的最大值保存
46 backup[peopleCount][poolNum]=maxGold;
47 return maxGold;
48 }
49 }

动态规划代码 加注释,布布扣,bubuko.com

时间: 2024-12-29 17:59:56

动态规划代码 加注释的相关文章

关于代码加不加注释的问题

绝对的要加注释. 1,你或许觉得你的代码,自己不加注释也能看懂,但是别人呢,以后接手工作的人呢. 2,现在不加注释,过个两三个月,复杂的逻辑自己就记忆不清晰了,还要看代码想好久逻辑关系. 3,最最主要的是加了规范是代码你不觉得很装逼吗.例子如下; + (BOOL)isEmptyObject:(NSObject *)object { if ([object isEqual:[NSNull null]] || object == nil) { return YES; } else if ([obje

vc6.0批量加注释

MATLAB批量加注释的方法非常简单明了,加注释是ctrl+R,去注释是ctrl+T 然后在VC中我对一条一条加注释的方法非常烦恼,我想也许会有简单的方法可以批量家注释.果然,先贴代码 1 '------------------------------------------------------------------------------ 2 'FILE DESCRIPTION: 给vc++6.0中添加和取消批量注释的功能 3 '-----------------------------

配置TortoiseSVN客户端, 强制签入前加注释

正如上篇提到, 总有一些人在签入代码到SVN前没有加注释, 然后, 像这样: 鬼才知道改了什么东西. ①有些人可能就是没有写注释的习惯, ②有些人可能是忘记写注释 && SVN服务端和客户端默认设置的Bug导致没写注释就Check in了. 对于不写注释的恶习, 我想说: 所写的注释可能就和自己JJ的长度一样, 自己看着办吧. 对于忘加注释的借口, 请继续看. 将介绍如何配置TortoiseSVN客户端, 在不写注释的情况下无法完成签入动作. ==============割掉那人小JJ==

Eclipse Code Template 设置自动加注释

Eclipse Code Template 设置自动加注释 设置注释模板的入口: Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元素啦.现就每一个元素逐一介绍: 文件(Files)注释标签: /**    * @Title: ${file_name}  * @Package ${package_name}  * @Description: ${todo}(用一句话描述该文件做什

vim编辑器-多行加注释与去注释

在使用vim编辑器时,有时候需要对多行代码进行加注释或去注释,它不像我们在类似于vs等下,需要我们自己输入命令操作,下面将介绍两种方法. 方法一:块选择模式 1. 插入注释 (1)首先按键盘上的ESC进入命令行模式 (2)再按Ctrl+V进入VISUAL BLOCK模式 (3)利用上下左右键调整需要注释多少行以及行的宽度 (4)再按Shift+i或s进入插入模式 (5)输入代表注释的符号,比如# (6)再次按ESC键,这时就可完成多行注释(可能需要等上一会,不要着急) 2. 去注释 前三步与加注

编程算法 - 背包问题(三种动态规划) 代码(C)

背包问题(三种动态规划) 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目參考: http://blog.csdn.net/caroline_wendy/article/details/37912949 能够用动态规划(Dynamic Programming, DP)求解, 能够通过记忆化搜索推导出递推式, 能够使用三种不同的方向进行求解. 动态规划主要是状态转移, 须要理解清晰. 代码: /* * main.cpp * * Created o

通过游戏学python 3.6 第一季 第三章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释 可复制直接使用 娱乐 可封装 函数

1 #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释 2 3 import random 4 number = random.randint(1,99)#设定答案(可以假设成年龄吧) 5 amount = random.randint(3,8) #设定猜测次数 6 print('本次游戏次数为',amount,'次') 7 8 count = 0 #设定初始次数 9 while count <= amount: #条件成立无限循环 10 try: 11 guess

浅谈DevExpress&lt;五&gt;:TreeList简单的美化——自定义单元格,加注释以及行序号

今天就以昨天的列表为例,实现以下效果:预算大于110万的单元格突出显示,加上行序号以及注释,如下图: 添加行序号要用到CustomDrawNodeIndicator方法,要注意的是,取得的节点索引是从0开始的,所以要+1以便第一行从一开始算起. private void treeList1_CustomDrawNodeIndicator(object sender, CustomDrawNodeIndicatorEventArgs e) { TreeList tree = sender as D

同过代码 加载 storyboard 中的 控制器 controller

一.通过代码加载storyboard文件创建控制器的view   Test.storyboard  前名是文件名,后面的storyboard是文件的扩展名 // 1. 应用程序启动完成,会调用此方法,启动之后,将不再调用此方法!// 如果因为内存等原因,应用程序被操作系统干掉,再次点击图标,会调用此方法! - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)l