DP 多重揹包問題模板

2021-10-03 01:57:18 字數 822 閱讀 4223

小明手裡有n元錢全部用來買書,書的**為10元,20元,50元,100元。

問小明有多少種買書方案?(每種書可購買多本)

輸入格式

乙個整數 n,代表總共錢數。

輸出格式

乙個整數,代表選擇方案種數。

資料範圍

0≤n≤10000≤n≤1000

輸入樣例1:

20
輸出樣例1:

2
輸入樣例2:

15
輸出樣例2:

0
輸入樣例3:

0
輸出樣例3:

1
演算法分析:

多重揹包問題:每個物品可以選多個,分類的時候,就要考慮每個物品選幾個了,從0個開始,一直到滿足這個條件:j-s*v[i]>0

的s取到最大為止。推出f[i][j]=f[i-1][j] + f[i][j-v[i]]。

#include #include using namespace std;

const int n=1010;

int f[n];

int w[4]=;

int v;

int main()

cout<

return 0;

}

模板 多重揹包問題

有 n 種物品和乙個容量是 v 的揹包。第 i 種物品最多有 si 件,每件體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使物品體積總和不超過揹包容量,且價值總和最大。輸出最大價值。輸入格式 第一行兩個整數,n,v,用空格隔開,分別表示物品種數和揹包容積。接下來有 n 行,每行三個整數 vi...

dp 多重揹包

推薦 學會了前兩個揹包 學這個揹包還是很輕鬆的 多重揹包 顧名思義 就是前兩種揹包結合到一起 首先還是用乙個例子說明 1 問題描述 已知 有乙個容量為v的揹包和n件物品,第i件物品最多有num i 件,每件物品的重量是weight i 收益是cost i 問題 在不超過揹包容量的情況下,最多能獲得多...

多重揹包模板

有n種物品和乙個容量為v的揹包。第i種物品最多有num i 件可用,每件費用是c i 價值是w i 求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。多重揹包問題的思路跟完全揹包的思路非常類似,只是k的取值是有限制的,因為每件物品的數量是有限制的,狀態轉移方程為 dp i ...