有 n 組物品和乙個容量是 v 的揹包。
每組物品有若干個,同一組內的物品最多只能選乙個。
每件物品的體積是 vij,價值是 wij,其中 i 是組號,j 是組內編號。
求解將哪些物品裝入揹包,可使物品總體積不超過揹包容量,且總價值最大。
輸出最大價值。
輸入格式
第一行有兩個整數 n,v,用空格隔開,分別表示物品組數和揹包容量。
接下來有 n 組資料:
每組資料第一行有乙個整數 si,表示第 i 個物品組的物品數量;
每組資料接下來有 si 行,每行有兩個整數 vij,wij,用空格隔開,分別表示第 i 個物品組的第 j 個物品的體積和價值;
輸出格式
輸出乙個整數,表示最大價值。
資料範圍00
0輸入樣例35
2122
4134
145輸出樣例:
)//組號
for(
int j =
0; j <= m; j ++)}
cout << f[n]
[m]<< endl;
return0;
}
#include
#include
using
namespace std;
const
int n =
110;
int n, m;
int v[n]
[n], w[n]
[n], s[n]
;int f[n]
;int
main()
for(
int i =
1; i <= n; i ++
)//組號
for(
int j = m; j >=
0; j --
)for
(int k =
0; k < s[i]
; k ++
)//遍歷每一組的物品
if(v[i]
[k]<= j)
//注意要寫在裡面,這個不行,換這一組的其他物品
f[j]
=max
(f[j]
, f[j - v[i]
[k]]
+ w[i]
[k])
; cout << f[m]
<< endl;
return0;
}
分組揹包問題
有 n nn 組物品和乙個容量是 v vv 的揹包。每組物品有若干個,同一組內的物品最多只能選乙個。每件物品的體積是 vij v vi j 價值是 wij w wi j 其中 i ii 是組號,j jj 是組內編號。求解將哪些物品裝入揹包,可使物品總體積不超過揹包容量,且總價值最大。輸出最大價值。輸...
分組揹包問題
有 n 組物品和乙個容量是 v 的揹包。每組物品有若干個,同一組內的物品最多只能選乙個。每件物品的體積是 vij,價值是 wij,其中 i 是組號,j 是組內編號。求解將哪些物品裝入揹包,可使物品總體積不超過揹包容量,且總價值最大。輸出最大價值。輸入格式 第一行有兩個整數 n,v,用空格隔開,分別表...
分組揹包問題
分組揹包問題 有 n 組物品和乙個容量是 v 的揹包。每組物品有若干個,同一組內的物品最多只能選乙個。每件物品的體積是 vij,價值是 wij,其中 i 是組號,j 是組內編號。求解將哪些物品裝入揹包,可使物品總體積不超過揹包容量,且總價值最大。輸出最大價值。輸入格式 第一行有兩個整數 n,v,用空...