動態規劃求解揹包問題(JAVA實現)

2021-07-30 00:23:10 字數 868 閱讀 6128

package com.knapsack.problem;

public

class

backpack ;//商品的重量

int p = ;//商品的價值

int c = backpack_solution(m, n, w, p);//儲存運算過程的陣列

for (int i = 0; i <=n; i++) }}

//printpack(c, w, m, n);

}/**

*@param m 表示揹包的最大容量

*@param n 表示商品個數

*@param w 表示商品重量陣列

*@param p 表示商品價值陣列

*@param c[i][m] 前i個物體放入容量為m的揹包的最大價值

*@param c[i-1][m] 前i-1個物體放入容量為m的揹包的最大價值

*@param c[i-1][m-w[i]] 前i-1個物體放入容量為m-w[i]的揹包的最大價值

*/public

static

int backpack_solution(int m, int n, int w, int p) else

c[i][j] = c[i - 1][j];//否則不放入

}//當物品為i件重量為j時,如果第i件的重量(w[i-1])小於重量j時,c[i][j]為下列兩種情況之一:

//(1)物品i不放入揹包中,所以c[i][j]為c[i-1][j]的值

//(2)物品i放入揹包中,則揹包剩餘重量為j-w[i-1],所以c[i][j]為c[i-1][j-w[i-1]]的值加上當前物品i的價值

}return c;

}}

動態規劃求解揹包問題

假設有n件物品和容量為m的揹包,已知每件物品的重量及價值,在滿足裝入揹包的物品重量最大的前提下,使得裝入物品的總價值最大。1 二維動態規劃 d p i j ma x dp i 1 j dp i 1 j w eigh ts i v alue s i dp i j max dp i 1 j dp i 1...

01揹包問題 動態規劃求解

時間限制 1 sec 記憶體限制 128 mb 提交 48 解決 17 給定n種物品和乙個揹包,物品i的重量是wi,其價值為vi,問如何選擇裝入揹包的物品,使得裝入揹包的物品的總價值最大?在選擇裝入揹包的物品時,對每種物品i只能有兩種選擇,裝入或者不裝入,不能裝入多次,也不能部分裝入。第一行輸入物品...

0 1揹包問題,動態規劃求解

1.什麼是0 1揹包問題?有n個物品,它們有各自的體積和價值,現有給定容量的揹包,如何讓揹包裡裝入的物品具有最大的價值總和?舉例int v 每個物品對應的價值 int w 每個物品對應的重量 int bag 10 揹包最大承重10 0 1揹包問題 public static void main st...