亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java背包問題

java背包問題

?有一個背包的負重最多可達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]); }}
查看完整描述

1 回答

已采納
?
路人丶丨

TA貢獻115條經驗 獲得超45個贊

設置每種東西的個數為int值,對第一個物品進行循環,最大值為總價/單價取整。 然后在此循環下,對其他的物品進行同樣邏輯的循環,保證條件是各個物品的單價*個數相加,不能大于總數。 可以得出不同的結果,獲取最大就好。

查看完整回答
反對 回復 2016-10-26
  • 1 回答
  • 1 關注
  • 1381 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號