分組揹包問題

2021-10-02 12:13:20 字數 989 閱讀 7049

有 n 組物品和乙個容量是 v 的揹包。

每組物品有若干個,同一組內的物品最多只能選乙個。

每件物品的體積是 vij,價值是 wij,其中 i 是組號,j 是組內編號。

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

輸出最大價值。

輸入格式

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

接下來有 n 組資料:

每組資料第一行有乙個整數 si,表示第 i 個物品組的物品數量;

每組資料接下來有 si 行,每行有兩個整數 vij,wij,用空格隔開,分別表示第 i 個物品組的第 j 個物品的體積和價值;

輸出格式

輸出乙個整數,表示最大價值。

資料範圍

0#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=

1;k<=s[i]

;k++)if

(j>=v[i]

[k])

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,用空...