筆試題14 揹包問題(01 完全 多重)

2021-09-25 22:23:37 字數 1011 閱讀 2864

01揹包

有n件物品和乙個容量為m的揹包。第i件物品的費用(即體積)是w[i],價值是 v[i]。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。

狀態轉移方程:f[j] = max

核心**如下:

#include using namespace std;

long f[30000];

int m,n,v[1000],w[1000];

int main()

完全揹包

有n件物品和乙個容量為m的揹包。第i件物品的費用(即體積)是w[i],價值是 v[i]。其中每一件物品都可以在空間條件滿足(包放的下)的條件下無限放,求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。

狀態轉移方程也是:f[j] = max

核心**如下:

#include using namespace std;

long f[30000];

int m,n,v[1000],w[1000];

int main()

多重揹包

有n種物品和乙個容量為m的揹包。第i種物品最多有num[i]件可用,每件費用是w[i],價值是v[i]。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。

狀態轉移方程:f[j] = max (k表示這種物品放多少次 1 <= n <= num[i])

核心**如下:

#include using namespace std;

int f[10000],w[1000],v[1000],num[1000];

int m,n;

int main()

cout << f[m] 《參考自大佬:

揹包問題 01 完全 多重

題目 n件物品,容量為v的揹包,第i件的體積為c i 價值為w i 特點 每種物品只有一件,可以選或者不選 for i 1.n for v v.0 f v max tip 初始化的細節問題 在求最優解的揹包問題中,一般有兩種不同的問法 1 要求 恰好裝滿揹包 時的最優解 2 求小於等於揹包容量的最優...

多維多重揹包問題 01揹包,完全揹包,多重揹包

csdn 專業it技術社群 登入 blog.csdn.net有n件物品和乙個容量為v的揹包。第i件物品的費用是w i 價值是v i 求將哪些物品裝入揹包可使價值總和最大。1.1空間優化 這要求在每次主迴圈中我們以 v v 0 的遞減順序計算 f v 這樣才能保證計算 f v 時 f v ci 儲存的...

01揹包問題 完全揹包問題 多重揹包問題

0 1 揹包問題 給定 n 種物品和乙個容量為 c 的揹包,物品 i 的重量是 wi,其價值為 vi 問 應該如何選擇裝入揹包的物品,使得裝入揹包中的物品的總價值最大?分析一波,面對每個物品,我們只有選擇拿取或者不拿兩種選擇,不能選擇裝入某物品的一部分,也不能裝入同一物品多次。解決辦法 宣告乙個 大...