【发布时间】:2020-10-14 18:13:48
【问题描述】:
我已经成功地用 C++ 编写了算法,以获得整数背包、分数背包和混合型背包的最优解,所有这些都对每个物品的允许携带数量有或没有限制。
这些只处理具有奇异约束的项目,即重量。如果我想解决一个可能有 2 个以上约束的背包,我会从我已经编写的其他代码中提取还是需要编写一个全新的算法?
整数型和混合型背包是用求解动态规划编写的,而分数型则用贪心算法。
例如。 给定两个整数项和一个小数项。
各自的值为 (9, 8, 3)
各自的权重是 (2, 3, 1) max Weight =24
各卷为 (3, 2, 2) max Volume=23
找到最优解并求和。
我相信我已经计算出这个总和是 77.5
【问题讨论】:
-
这个新问题只针对整数吗?
-
不,它可以包含整数和小数项。
-
如果我们有更多关于特定问题的详细信息,例如,我会更容易提出建议
-
好的,我在编辑一个。
-
请注意,如果您能够仅使用小数有效地解决此问题,在这种特殊情况下,您可以推导出整数/小数混合解决方案,它可以提供良好的性能。
标签: c++ algorithm dynamic-programming knapsack-problem greedy