小编Tho*_*ton的帖子

0-1多维背包

因此,我正在尝试生成一种算法,该算法将找到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)

java algorithm knapsack-problem multidimensional-array

4
推荐指数
1
解决办法
4148
查看次数