带有数量限制的背包

时间:2017-03-17 21:12:07

标签: java algorithm knapsack-problem

我试图解决一个类似于背包问题而又扭曲的问题。至少那就是我所认为的无论如何。 在背包问题中,我们有背包的重量容量,物品的重量和价值。 我对这一个的转折是添加一定数量的可用于填充项目的插槽。像这样: 我们有一个最大重量为30的背包,无论重量如何,它只能容纳6件。允许重复。

我设法制作了一个递归函数,该函数使List包含可用插槽的相同数量的列表

List<List<Item>> workingList
// Example of a list of items.
{"items" : 
    ["name":"item1","value":2,"weight"4],
    ["name":"item2","value":3,"weight"5],
    ["name":"item3","value":4,"weight"6],
    ["name":"item4","value":5,"weight"8]
}

并返回建议的重量和值最佳项目列表。这个功能的问题在于它非常贪心。如果我有超过4个插槽和10个项目,它需要永远(或耗尽内存)。我需要能够容纳约50个或更多项目以及大约3-8个插槽。我已经看过背包问题的一些例子,但如果它能解决我的问题,就不能很好地掌握。是否可以使用背包或者它是一种完全不同的方法吗?

0 个答案:

没有答案