多重揹包問題 I

2021-10-21 04:19:21 字數 829 閱讀 8358

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

第 i 種物品最多有 si 件,每件體積是 vi,價值是 wi。

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

輸出最大價值。

輸入格式

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

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

輸出格式

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

資料範圍

0解題思路:

我們定義dp[i][j]表示從前i個物品中選,所選物品總體積不超過j的集合的總價值,這個關係表示式很容易就能想到,dp[0][j]初始化為0

**如下:

#include

using

namespace std;

const

int n =

101;

int n,v;

int v[n]

,w[n]

,s[n]

,dp[n]

[n];

intmain()

for(

int i =

1;i<=n;i++

)for

(int j =

0;j<=v;j++

)for

(int k =

0;k<=s[i]

&& k*v[i]

<=j ;k++

)

cout<[v]

}

多重揹包問題 I

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

多重揹包問題I

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

4 多重揹包問題 I

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