我在Java中做背包,我们只使用权重而没有价值.重量限制是1000.我们使用键盘扫描5个重量.扭曲的是,你可以实际超过1000,从壁橱到1000.所以在一个场景中,我们有2个可能的重量990和1010,并且程序被调整以选择更高的一个.扫描的数字永远不会高于1000.
package kapsackidone; import java.util.Scanner; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.*; public class Kapsack { public static void main(String[] args) throws Exception { BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); int [] wt=new int[5]; int W = 1000; System.out.println("Enter Weight 5 weights"); for(int i=0; i<5; i++) { wt[i]=Integer.parseInt(reader.readLine()); } System.out.println(knapsack(wt, W)); } public static int knapsack(int wt[], int W) { int N = wt.length; int[][] V = new int[N + 1][W + 1]; for (int col = 0; col <= W; col++) { V[0][col] = 0; } for (int row = 0; row <= N; row++) { V[row][0] = 0; } for (int item=1;item<=N;item++){ for (int weight=1;weight<=W;weight++){ if(wt[item-1] > weight) { V[item][weight] = V[item-1][weight]; } else if((weight - V[item-1][weight]) < (weight - (V[item-1][weight - wt[item-1]] + wt[item-1]))) { V[item][weight] = V[item-1][weight]; } else { V[item][weight] = V[item-1][weight - wt[item-1]] + wt[item-1]; } } } return V[N][W]; } }
我真的在努力完成这项工作.你问没有之前它不是功课我也会为这包括开发人员,以便即时通讯只是想学习一些Java,使我了解了一下,甚至寿我怀疑,我将能够为他们所做的人们一个新的小组项目经理帮助编码.