因此,我正在尝试生成一种算法,该算法将找到n项的最佳组合(在我的情况下为4),只能在背包中放置一次(0-1)并具有最大重量容量.可能更有效地概括,我想在我的背包中放置不超过四个独特的物品,以便它们的重量小于某个值W,同时最大化它们的总价值.我的第一次尝试和假设是将体积限制为4,所有项目体积为1,用于多维背包问题.但是我遇到了它不是0-1的问题(意思是否在袋子里).然后我尝试制作一个多维的0-1(有界)背包代码,但我无法添加音量限制以及0-1要求.如何编写0-1多维背包问题?或者我如何调整代码只保留一个V卷,所有项目卷为1?代码不一定是Java,但这是我到目前为止所拥有的.
背包:
package hu.pj.alg;
import hu.pj.obj.Item;
import java.util.*;
public class ZeroOneKnapsack {
protected List<Item> itemList = new ArrayList<Item>();
protected int maxWeight = 0;
protected int solutionWeight = 0;
protected int profit = 0;
protected boolean calculated = false;
public ZeroOneKnapsack() {}
public ZeroOneKnapsack(int _maxWeight) {
setMaxWeight(_maxWeight);
}
public ZeroOneKnapsack(List<Item> _itemList) {
setItemList(_itemList);
}
public ZeroOneKnapsack(List<Item> _itemList, int _maxWeight) {
setItemList(_itemList);
setMaxWeight(_maxWeight);
}
// calculte the solution of 0-1 knapsack problem with dynamic method:
public List<Item> calcSolution() {
int n = …Run Code Online (Sandbox Code Playgroud)