V 友们,问个算法题啦哈哈

2019-07-25 19:59:49 +08:00
 Oz2011

一共 20 个种类的物品,每个种类有 10 件,每件都有价格,运费,评分 (价格在 1-20 之间,运费在 2-5 之间)

问,每个总类最多拿一件物品,要求在价格+运费<=50 的情况下 使得评分之和最高

2518 次点击
所在节点    算法
6 条回复
newtype0092
2019-07-25 20:42:56 +08:00
搜《背包九讲》,一次解决所有相关问题。你这个应该属于里面的“分组背包”问题。
litmxs
2019-07-25 20:43:52 +08:00
背包
jmc891205
2019-07-25 20:46:04 +08:00
每种最多只能拿 1 件的话
每种有 10 件这个条件好像没啥用
Oz2011
2019-07-26 05:24:03 +08:00
@newtype0092 可问题是,完全有可能不从某组中拿东西啊
DaCong
2019-07-26 21:06:17 +08:00
同 1 楼,这个问题已经被《背包九讲》讨论过,这里给出链接 https://github.com/tianyicui/pack/blob/master/V2.pdf
请看其中的分组背包一节。

你说的“完全有可能不从某组中拿东西啊”,而《背包九讲》中分组背包一节中提到“这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。”可见你的问题已经被文档所涵盖。
Oz2011
2019-07-30 09:00:08 +08:00
@DaCong 对的,是分组背包,已经搞定啦,谢谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/586232

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX