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()
函数。我实际上已经更新了您的代码:)。但我不会发布它,这样您就可以自己做了。