【发布时间】:2014-12-06 16:25:17
【问题描述】:
这个问题涉及到试图适应 不同的重量放入一个袋子中,这样袋子最终会带有一个 指定总重量或最接近指定总重量。
示例 1:- 袋子最多可容纳 240 公斤的重量
Item1- 60kg,Item2- 30kg,Item3- 55kg,Item4- 60kg,Item5- 80kg,Item6- 40kg,Item7- 7kg,
这里选择的项目应该是Item1、Item4、Item5和Item6(60+60+80+40 = 240 kg)
示例 2:- 袋子最多可容纳 180 公斤的重量
Item1- 60kg,Item2- 30kg,Item3- 55kg,Item4- 30kg,Item5- 70kg,Item6- 48kg
这里选择的项目应该是Item1、Item4、Item5和Item6(60+70+48 = 178 kg)
最接近180公斤
这是我的模板方法
public List getSelectedItems(List<Presentation> inputList, int knapsackCapacity){
List selectItems;
// optimized algorith which returns selectItems and inputList containing the
//left out items i.e which are not selected;
return selectItems;
}
网上有些人称它为Knapsack problem 的最简单形式,因为它没有任何相关的利益/利润,有些人称它为Change-making problem
无论它属于哪个类别,我都无法获得此算法,因此无法从中制作 java 程序。这里有什么帮助吗?
【问题讨论】:
-
背包很难。如果您可以“优化”其解决方案,那么您至少应该获得诺贝尔奖。可能还有一些间谍机构的暗杀……
-
@hop 你的意思是说递归是目前唯一的方法,直到有人提出更好的解决方案?
-
@MSach:不,我根本不想这么说。
标签: java algorithm knapsack-problem