博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题目1462:两船载物问题
阅读量:4685 次
发布时间:2019-06-09

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

题目描述:

给定n个物品的重量和两艘载重量分别为c1和c2的船,问能否用这两艘船装下所有的物品。

刚开始还以为可以搞贪心,脑子短路了,后来想想,都使劲往一个背包塞可以搞成01背包问题。。ok

具体的要先往哪个背包塞还有待考量......

程序代码如下:

#include
#include
#define max(a,b) a>b?a:bconst int NMAX=103;const int MAX=5003;int value[NMAX],volumn[NMAX];int dp[MAX];int main(){ int n,i,j,c1,c2; while(~scanf("%d%d%d",&n,&c1,&c2)) { int sum=0; for(i=1;i<=n;i++){ scanf("%d",value+i); volumn[i]=value[i]; sum+=value[i]; } memset(dp,0,sizeof(dp)); //一维01背包实现 for(i=1;i<=n;i++) { for(j=c1;j>=volumn[i];j--) dp[j]=max(dp[j],dp[j-volumn[i]]+value[i]); } if(sum-dp[c1]>c2) puts("NO"); else puts("YES"); } return 0;}

转载于:https://www.cnblogs.com/cjweffort/archive/2013/03/09/3374877.html

你可能感兴趣的文章
观察者模式------《Head First 设计模式》
查看>>
JSP表单提交乱码
查看>>
如何适应现代雇佣关系
查看>>
【BZOJ4592】[Shoi2015]脑洞治疗仪 线段树
查看>>
redis sentinel 读写分离
查看>>
团队项目(第五周)
查看>>
ElasticSearch6(三)-- Java API实现简单的增删改查
查看>>
选拔赛 I 点进来吧,这里有你想要的
查看>>
SQL 优化经验总结34条
查看>>
开源 视频会议 收藏
查看>>
核心J2EE模式 - 截取过滤器
查看>>
test1
查看>>
.net开源CMS
查看>>
你懂AI吗(1)
查看>>
双拼输入法
查看>>
CentOS7 中防火墙配置
查看>>
php扩展目录
查看>>
PageRank算法
查看>>
git的介绍和配置
查看>>
C 语言 习题 1-14
查看>>