揹包九講 8

2022-10-10 06:03:09 字數 964 閱讀 4745

有 n 件物品和乙個容量是 v的揹包。每件物品只能使用一次。

第 ii 件物品的體積是 vi,價值是 wi。

求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。

輸出最優選法的方案數。注意答案可能很大,請輸出答案模 109+7 的結果。

輸入格式

第一行兩個整數,n,v,用空格隔開,分別表示物品數量和揹包容積。

接下來有 n 行,每行兩個整數 vi,wi,用空格隔開,分別表示第 i件物品的體積和價值。

輸出格式

輸出乙個整數,表示方案數模 109+7 的結果。

資料範圍

0輸入樣例

4 5

1 22 4

3 44 6

輸出樣例:
2
01揹包問題的變種,由於是記錄01揹包的方案數,所以在開乙個陣列g來記錄體積為n時的方案數。

#include#include#includeusing namespace std;

const int n = 1010;

//01揹包環境下

int f[n];//記錄體積為n時最大價值

int g[n];//記錄體積為n時的方案數

int n,m;

const int mod=1e9+7;

const int inf=10000000;

int main()

}int maxw=0;

for(int i=0;i<=m;i++) maxw=max(maxw,f[i]);//選出最大價值 注意:我們並不是一定要用完所有體積,所以最大值應該在0-m去遍歷尋找

int res=0;

for(int i=0;i<=m;i++)

}cout

}

揹包九講 簡單揹包

揹包問題是一種動態規劃演算法的衍生問題。它可以被看作一種獨立的題型,也可以看作是一種線性動態規劃。學好揹包 學會揹包,對於深入理解動態規劃演算法有著極大的好處,並能幫助理解一些更深層次的動態規劃問題。那麼就開始吧 題目型別 有 n 件物品和乙個容量為 v 的揹包。第 i 件物品的費體積是 v i 價...

演算法 揹包九講

例題參考 資訊學奧賽一本通 初始化分兩種情況 1 如果揹包要求正好裝滿則初始化 f 0 0,f 1 v inf 2 如果不需要正好裝滿 f 0 v 0 有n件物品和乙個容量為v的揹包。第i件物品的費用 即體積,下同 是w i 價值是c i 求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,...

揹包九講(9)

以上涉及的各種揹包問題都是要求在揹包容量 費用 的限制下求可以取到的最大價值,但揹包問題還有很多種靈活的問法,在這裡值得提一下。但是我認為,只要深入理解了求揹包問題最大價值的方法,即使問法變化了,也是不難想出演算法的。例如,求解最多可以放多少件物品或者最多可以裝滿多少揹包的空間。這都可以根據具體問題...