題目:
現有n個物品,重量依次為w i(使用int weight表示),價值依次為 v i(使用 int values表示),現有乙個可裝重量為17的包(使用bag表示),求使揹包物品價值最大化的最優解,
**示例:
/**
* 全排列問題(深度搜尋字典序)
* * @author swing
* */
public class main ;
// 物品的價值
int value = new int ;
// 包的容量
int bag = 17;
// 規劃表(初始化都為0)
int table = new int[weight.length][bag + 1];
// 最優解(1表示該物品被放入包中,0表示沒有)
int result = new int[weight.length];
int index = result.length - 1;
public static void main(string args)
public main()
// 否則就不放
else
table[i][w] = table[i - 1][w];
}} printtable(table);
system.out.println("\n最大價值:" + table[weight.length - 1][bag]);
check(weight.length - 1, bag);
system.out.println("\n物品取捨明細如下:");
for (int i = 0; i < result.length; i++)
system.out.print(result[i] + "\t");
} // 根據位置獲取實現最大價值時的取捨方案
// (如果table[i][w]=table[i-1][w],則說明第i個物品沒被放入包中)
public void check(int i, int w) else
} }// 輸出表
public void printtable(int table)
system.out.println();
} }}
執行結果:
揹包問題1(01揹包)
揹包問題 01揹包 以下內容為學習過程的總結,可能有些copy網上內容,請不要在意這些細節!01問題的提出 有n件物品和乙個容量為v的的揹包,n件物品的費用為c i i 1 n 價值為w i 問將那些物品放入揹包使得價值最大且不超過容量?思路 01揹包的特點是每種物品只有一件,可以選擇放或不放,可以...
動態規劃(1)0 1揹包同型別習題
先看0 1揹包問題,揹包可承受重量為w,有n個物品,它們的價值和重量分別為vi costi i 1 n 問揹包最大可以裝多少價值的物品。我們定義乙個函式f w,i 表示可承受重量為w的揹包,對於1 i號物品選擇若干個裝入揹包的最大價值。那麼對於物品i可放或者不可放,因此有 選擇不放入i號物品有f w...
動態規劃 揹包問題
給定n個物品,重量是,價值是,包的容量 承重 是w 問,放入哪些物品能使得包內價值最大 1 需要將問題轉化為子問題,通過遞迴實現,且子問題必然與父問題存在關聯 2 定義v i,j 表示為,當item取自前i個items且揹包capacity j 時,揹包問題的最優解,也即最高的價值。3 從前i個it...