Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 背包动态规划_Java_Dynamic Programming_Knapsack Problem - Fatal编程技术网

Java 背包动态规划

Java 背包动态规划,java,dynamic-programming,knapsack-problem,Java,Dynamic Programming,Knapsack Problem,这是一个典型的背包问题,需要动态规划,对物品的供应没有约束。我一直在为我的班级做这个,我试着玩了几个小时的算法,但我仍然没有达到目标 public static int fitBackPack(int[] W, int[] V, int T){ int[] Opt = new int[T+1]; Opt[0]=0; for (int i=1; i<=T; i++){ int localMax=0; int globalMax=0;

这是一个典型的背包问题,需要动态规划,对物品的供应没有约束。我一直在为我的班级做这个,我试着玩了几个小时的算法,但我仍然没有达到目标

public static int fitBackPack(int[] W, int[] V, int T){
    int[] Opt = new int[T+1];
    Opt[0]=0;
    for (int i=1; i<=T; i++){
        int localMax=0;
        int globalMax=0;
        for (int j=0; j<W.length; j++){
            if (W[j]<=i){
                localMax = (T%W[j]<=W[j]) ?  V[j] : V[j]+Opt[T-W[j]];
                globalMax = (localMax>=globalMax) ? localMax : globalMax;
            }
        }
        Opt[i]=globalMax;
    }
    //debugging purposes
    for (int k=0; k<Opt.length; k++){
        System.out.println("Opt["+k+"] = "+Opt[k]);
    }
    return Opt[T];
}
public static int-fitbackup(int[]W,int[]V,int-T){
int[]Opt=新int[T+1];
Opt[0]=0;
对于(int i=1;i提示:

(x%y由于您的算法像一个贪婪的算法,您的问题可能是在计算
localMax
(因为贪婪的算法寻找最高的局部值)。通过查看您的代码,您似乎得到了错误的
localMax
。提示,请参阅
Math.max()
函数。

我实际上已经更新了您的代码:)。但我不会发布它,这样您就可以自己做了。