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