問題:
有n組物品和乙個容量是v的揹包。
第組物品有若干個,同一組內的物品最多只能選乙個每件物品的體積是vij,價值是wij。其中i是組號,j是組內編號。
求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包的容量,且價值總和最大。
輸出最大價值
輸入格式
第一行有兩個整數,n,v用空格隔開,分別表示物品種數和揹包容積。
接下來有n組資料:
1.每組資料第一行有乙個整數si,表示第i個物品組的物品數量;
每組資料接下來有si行,每行有兩個整數vij,wij,用空格隔開,分別表示第i個物品組的第j個物品體積和價值
輸出格式
輸出乙個整數,表示最大價值
資料範圍
0輸入樣例
3 52
1 22 4
13 4
14 5
輸出樣例
8分析思路:
f[i][j]:表示總體積是i,重量為j的情況下,最大價值是多少
分組揹包列舉決策:s+1種
選擇0種,第1個,第2個,一共s+1種選擇
第一層:列舉物品組;
for(int i=0;i第二層:列舉體積(每個物品只能用一次)從大到小列舉
for(int j=m;j>=v;j--)
第一種決策:都不選,
第二種決策:選第乙個,...依次類推
f[j]
=max
;
**:
#include
#include
#include
using
namespace std;
const
int n=
110;
int n,m;
int f[n]
,v[n]
,w[n]
;//個數,體積,重量
intmain()
cout<
}
揹包九講之分組揹包問題
分組揹包的理解請建立前幾講的基礎上。01揹包 完全揹包 多重揹包 混合揹包 二維揹包 有n件物品,分為若干組,現約束,在每組物品裡最多取一件物品放入揹包,每件物品的重量確定,價值確定,揹包容量確定,求在不超過揹包容量的情況下,可以存放的最大價值。首先判斷乙個分組當中的一件物品,同01揹包一樣,此物品...
九大揹包問題專題 完全揹包問題(詳解,最優解)
和01揹包問題的區別 01揹包問題 1件物品只能選或者不選 完全揹包問題 1件物品可以重複選多次,只要不超過總體積 題目 問題 有n件物品和乙個容量是v的揹包。第i件物品的體積是vi,價值是wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包的容量,且價值最大。輸入格式 第一行有兩個整數,n...
揹包問題克星 分組揹包
有n件物品,告訴你這n件物品的重量以及價值,將這些物品劃分為k組,每組中的物品互相衝突,最多選一件,求解將哪些物品裝入揹包可使這些物品的費用綜合不超過揹包的容量,且價值總和最大。演算法 首先判斷乙個分組當中的一件物品,同01揹包一樣,此物品存在兩種狀態,取與不取,若取此物品,則繼續判斷下一組的第一件...