采药--动态规划
来源:互联网 发布:完整的hse培训矩阵 编辑:程序博客网 时间:2024/05/17 10:05
http://www.rqnoj.cn/Problem_15.html
总结:
1、写的很顺利,很快就写好了,成功ac,尝试加些注释结果加的乱七八糟
2、调试问题1,提交的时候int max[101][1001]; 如果定义成全局变量就会报错,搞不懂
调试问题2,if (j>=drug[i].time && ...) 写成 if (j>drug[i].time && ...) 运行结果有一定的测试点错误
我前面两个动态规划的错误测试点,可能就是这里产生的,一会儿试试
代表的意义不同,当有100s的采药时间的时候,就可以采需要100s时间的那个药,这个药的价值可能无穷大,就是题目的结果
而不用等到有101s的采药时间的时候才能采
这是根本的区别,>= 和 > 有本质的区别 在代表的实际意义中,迥然不同
#include <iostream>using namespace std;//物品数组,结构体,时间,价值struct {int time;int value;}drug[101];int main(){int totalTime, totalDrug;//总采药时间,总药品数int i,j;int max[101][1001]={0};//记录表格//读入数据cin>>totalTime>>totalDrug;for (i=1; i<=totalDrug; i++){cin>>drug[i].time>>drug[i].value;}//m*n复杂度,记录结果//算法/* 1、思考过程,递归分治:将问题分解成若干子问题,让问题规模变小 对于最终最优结果,假如第N个药品没有采,那么最优结果就是 总时间为totalTime,采n-1个物品的最大价值对于n-1如果不是最大价值,有比它更大的那么与最优结果的假设矛盾,所以满足 最优子结构性质 最终最大价值,就是两种情况,第n个物品采,要么没采的情况,max[n][m] = 较大值{max[n-1][m], max[n-1][m-time[n]]+value[n] }得出子问题重叠,和递推公式 用max[drug][time] 来建模描述,药品数drug,和当前采药时间time下的最大价值*/ for (i=1; i<=totalDrug; i++){for (j=1; j<=totalTime; j++){max[i][j] = max[i-1][j];if (j>=drug[i].time && max[i][j]<max[i-1][j-drug[i].time] + drug[i].value){max[i][j] = max[i-1][j-drug[i].time] + drug[i].value;}}}cout<<max[totalDrug][totalTime];return 0;}
- 采药--动态规划
- 采药 动态规划
- 动态规划-采药
- 动态规划:采药
- 动态规划 采药
- 动态规划―采药
- 【动态规划】poj2773采药问题
- Vijos P1104 采药 动态规划
- ACM-动态规划3-采药
- 动态规划 03 (采药)
- 动态规划练习--03(采药)
- 动态规划—03采药
- 动态规划练习03:采药
- 找啊找啊找GF --动态规划--类似采药
- Algorithm学习笔记 --- 采药(动态规划)
- |Tyvj|NOIP2005|动态规划|P1005 采药
- 动态规划-采药问题 [原题+题解]
- 【NOIP动态规划专题】采药2
- Python获取当前系统用户名
- 例说C# object类型
- 如何用Watij判断一个输入字段是在UI上是只读的字段
- android bitmap drawable 之间进行转换
- 使用axis开发WebService(总结)
- 采药--动态规划
- a标签IE浏览器兼容问题
- QTP和翻译软件的故事
- 2.用UDP心跳机制实现2个程序间的通讯 30分
- CMOS定义及谈谈系统CMOS密码
- Python标准模块logging2
- ThinkPHP中的BUG及技巧与策:
- SQLSERVER数据分区
- android系统键盘隐藏与显示问题