動態規劃(1) 01揹包問題

2021-10-01 20:47:14 字數 1244 閱讀 1249

題目:

現有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...