乙個揹包的總容量為v,現在有n類物品,第i類物品的重量為weight[i],價值為value[i]
那麼往該揹包裡裝東西,怎樣裝才能使得最終包內物品的總價值最大。
該方法使用dp[i][j]來儲存中間最大值。dp[i][j]表示前i件物品裝入容量為j的揹包所得的總價值最大值。
求動態規劃dp[i][j]的狀態轉移方程。
當出現第i件物品時:
1、若w[i]>v,這種情況下該i件物品不會裝入揹包,不考慮,此時有dp[i][j] = dp[i-1][j]。即前i件物品裝入揹包最大值和前i-1件物品裝入揹包最大值相等。因為第i件物品無效。
2、若w[i]j)
dp[i][j] = dp[i-1][j];
else
dp[i][j] = math.max(dp[i-1][j],dp[i-1][j-weight[i-1]]+value[i-1]);}}
//則容量為v的揹包能夠裝入物品的最大值為
int maxvalue = dp[n][v];
---------------------
原文:
動態規劃揹包問題 01揹包
問題描述 n種物品,每種乙個。第i種物品的體積為vi,重量為wi。選一些物品裝到容量為c的揹包,使得揹包內物品不超過c的前提下,重量最大。問題分析 宣告乙個f n c 的陣列。f i j 表示把前i件物品都裝到容量為j的揹包所獲得的最大重量。當 j v i 時,揹包容量不足以放下第 i 件物品,f ...
動態規劃 揹包問題 01揹包
有n種物品和乙個容量為v的揹包,每種物品僅用一次。第i件物品的費用是w i 價值是v i 求解將哪些物品裝入揹包可使價值總和最大。例如 n 5,v 10 重量 價值 第乙個物品 10 5 第二個物品 1 4 第三個物品 2 3 第四個物品 3 2 第五個物品 4 1 首先我們考慮貪心策略,選取最大價...
0 1揹包問題(動態規劃)
一 問題描述 有n件物品和乙個容量為v的揹包。第i件物品的費用是c i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。所謂01揹包,表示每乙個物品只有乙個,要麼裝入,要麼不裝入。二 解決方案 考慮使用動態規劃求解,定義乙個遞迴式 opt i v 表示前i個物品,在揹包容量大小為v的情況下,最...