動態規劃之揹包九講之六 分組揹包

2021-10-05 17:39:01 字數 719 閱讀 6021

題目:有 n 組物品和乙個容量是 v 的揹包。每組物品有若干個,同一組內的物品最多只能選乙個。每件物品的體積是 vij,價值是 wij,其中 i 是組號,j 是組內編號。求解將哪些物品裝入揹包,可使物品總體積不超過揹包容量,且總價值最大。輸出最大價值。

輸入格式

第一行有兩個整數 n,v,用空格隔開,分別表示物品組數和揹包容量。接下來有 n 組資料:每組資料第一行有乙個整數 si,表示第 i 個物品組的物品數量;每組資料接下來有 si 行,每行有兩個整數 vij,wij,用空格隔開,分別表示第 i 個物品組的第 j 個物品的體積和價值;

輸出格式

輸出乙個整數,表示最大價值。

資料範圍

0解析:本題與多重揹包有聯絡,多重揹包是分組揹包的乙個特例,以多重揹包每一種物品為一組,該組中的物品的個數從0…n打包,每一包作為乙個新去拼。即成為分組揹包。

code:

#include

#include

using

namespace std;

const

int n =

110;

int f[n]

,v[n]

,w[n]

;int

main()

for(

int j=v;j>=

0;j--)}

} cout<;return0;

}

揹包九講 6 分組揹包

問題引入 有 n nn 組物品和乙個容量是 v vv 的揹包 每組物品有若干個,同一組內的物品最多只能選乙個 每件物品的體積是 vi,jv vi,j 價值是 wi,jw wi,j 其中 i ii 是組號,j jj 是組內編號 求解將哪些物品裝入揹包,可使物品總體積不超過揹包容量,且總價值最大,輸出最...

動態規劃之揹包九講之四 混合揹包

題目 有 n 種物品和乙個容量是 v 的揹包。物品一共有三類 第一類物品只能用1次 01揹包 第二類物品可以用無限次 完全揹包 第三類物品最多只能用 si 次 多重揹包 每種體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使物品體積總和不超過揹包容量,且價值總和最大。輸出最大價值。輸入格式 第...

揹包九講之 01揹包

01揹包是最基礎的揹包問題,其中01代表的就是第i個物品的選或不選,在此先設v i 為體積,w i 為價值。很顯然,我們可以使用二位陣列dp i j 來表示前i個物品在揹包容量為j的時候可存放的最大價值。首先dp 0 0 0是很顯然的。而計算dp i j 時,存在01兩種情況 選或不選第i件物品。1...