?有一個背包的負重最多可達8公斤,而希望在背包中裝入負重范圍內可得之總價物品,現在有一些物品,單價和重量分別是:黑豆4kg/4500,紅豆5kg/5700,黃豆2kg/2250,紫薯1kg/1100,青豆6kg/6700.求裝滿一背包的物品,背包的價值最大的方案。代碼如下:class Fruit { private String name; private int size; private int price; public Fruit(String name, int size, int price) { this.name = name; this.size = size; this.price = price; } public String getName() { return name; } public int getPrice() { return price; } public int getSize() { return size; }}public class KnapsackProblem { public static void main(String[] args) { final int MAX = 8; final int MIN = 1; int[] item = new int[MAX + 1]; int[] value = new int[MAX + 1]; Fruit fruits[] = { new Fruit("李子", 4, 4500), new Fruit("蘋果", 5, 5700), new Fruit("橘子", 2, 2250), new Fruit("草莓", 1, 1100), new Fruit("甜瓜", 6, 6700) }; //No.1 //開始寫代碼,補充完整代碼,用動態規劃的方法實現背包問題 for (int i = 0 ) { for (int s = fruits[i].getSize() ) { int p = s - fruits[i].getSize(); int newvalue = value[p] + fruits[i].getPrice(); } } } //end_code System.out.println("物品\t價格"); for (int i = MAX; i >= MIN; i = i - fruits[item[i]].getSize()) { System.out.println(fruits[item[i]].getName() + "\t" + fruits[item[i]].getPrice()); } System.out.println("合計\t" + value[MAX]); }}
java背包問題
qq_守護中的那個她_03928733
2016-10-24 16:20:34