2009 英特尔® 线程挑战赛 第五题 背包问题!

denghui0815 2009-06-03 10:21:55
背包问题

在你为旅行准备行李时,重要的是你要注意不要在行李箱里放过多的东西,否则你可能会为因行李过重而付出额外的代价。这可能是来自航空公司的额外行李费用,或由于携带背包引起的肌肉酸痛。而且,当你装包时,控制总重量并不是你的唯一标准,你需要为你的旅行放入更有价值的物品。比如当你到澳大利亚度假时,如果你在包里塞满了羽毛,这不会有任何意义。背包问题的目的是要找到物品的最优选择,从而使这些物品的总价值最大,同时使总重量控制在限制范围内。

问题:写一个线程代码来找到能够形成最大总价值的物品清单,同时这些物品的总重量能够满足一个背包(容器)的限定容量。每个物品将有一个相关属性,包括容量(用重量表示)和价值(价格)。背包容量和要使用的物品清单会包含在命令行指定的输入文件内。装入的物品清单,装入的物品数量,总重量以及最终总价值将打印到一个输出文件:packinglist.out。

输入格式:第一行的文本文件将包含三个数:一个实数和两个整数。实数表示背包的容量,第一个整数表示每个可用物品的最大数目,这就是说,即使每个物品会在文件中列出一次,可能会有多个相同物品用来装包。第二个整数表示文件中物品的数目。随后的每一行由三项数据组成:表示物品名的唯一的13个字符长的字符串;表示物品重量的一个实数;以及表示物品价值的一个实数。在输入中不存在重量和价值相同的两个物品。

输出格式:使用易懂的一些格式。列出装入包中的每个物品以及这些物品的数量。同时需要包括所有装入包中物品的总重量和总价值。

第一个输入文件样例:
15.0 4 5
XXL blue Ox 2.0 2.00
gray mouse 1.0 2.00
big green box 12.0 4.00
yellow daisy 4.0 10.00
salmon mousse 1.0 1.00

第一个输出文件样例:
The items to fit into the 15.0 knapsack are:
3 yellow daisy
3 gray mouse
Total capacity used: 15.00
Total value: 36.00


--------------------------------------------------------------------------------

第二个输入文件样例:
15.0 1 6
XXL blue Ox 2.0 2.00
gray mouse 1.0 2.00
big green box 12.0 4.00
yellow daisy 4.0 10.00
salmon mousse 1.0 1.00
9780596521530 1.54 44.99

第二个输出文件样例:
The items to fit into the 15.0 knapsack are:
1 gray mouse
1 9780596521530
1 yellow daisy
1 salmon mousse
1 XXL blue Ox
Total capacity used: 9.54
Total value: 59.99

计时:总执行时间将用于计分。如果没有找到最优方案,将会减分。

...全文
93 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
haojn 2009-06-23
  • 打赏
  • 举报
回复
我是两个算法并行。。。

其实主力算法已经很好了,随机数据都是瞬间出结果
denghui0815 2009-06-22
  • 打赏
  • 举报
回复
我并行化做得比较差 难度较大
haojn 2009-06-22
  • 打赏
  • 举报
回复
这回我是最后5分钟交的。。。
williammane1984 2009-06-10
  • 打赏
  • 举报
回复
我也想知道啊!!!
谢谢
haojn 2009-06-10
  • 打赏
  • 举报
回复
好想有个帖子说重量限制在10^6
haojn 2009-06-10
  • 打赏
  • 举报
回复
以clay的风格,估计不会的:)
haojn 2009-06-09
  • 打赏
  • 举报
回复
clay说只用保留两位小数,这样一来算法彻底变了
haojn 2009-06-09
  • 打赏
  • 举报
回复
实在是太忙了,现在基本上都是周五开始做,周六凌晨交。。。
denghui0815 2009-06-09
  • 打赏
  • 举报
回复
呵呵 你会成为超人的
用动态规划还是有问题 如果背包的容量大于 100000000.00 那么内存就不够用了
denghui0815 2009-06-08
  • 打赏
  • 举报
回复
呵呵 谢谢 你也加油啊
haojn 2009-06-08
  • 打赏
  • 举报
回复
先恭喜一下第三题!
denghui0815 2009-06-06
  • 打赏
  • 举报
回复
这个我也不知道哦 Clay说的比较含糊
haojn 2009-06-06
  • 打赏
  • 举报
回复
呵呵,我刚把上一道题交了

如果不是最优解的话,会减多少分?

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧