經典揹包系列問題

2022-08-18 08:44:51 字數 2185 閱讀 6987

揹包問題i

試題描述

有乙個揹包容積為 v 和 n 個物品,並給出每個物品有乙個體積。要求從 n 個物品中,任取若干個裝入揹包內,使揹包的剩餘空間為最小。

輸入第一行兩個正整數 v 和 n,分別表示揹包的容積和待裝物品的個數;第二行包括 n 個正整數,表示 n 個物品的體積,兩兩之間有乙個空格分隔。

輸出乙個數,表示揹包中剩餘空間的最小值

輸入示例

24 6

8 3 12 7 9 7

輸出示例

0其他說明

資料範圍:0

view code

揹包問題ii

試題描述

仍然是揹包問題……典型0-1揹包!題曰:今有n個物品,第i個體積為v[i],價值為w[i],揹包的容積為c。求在體積不超容積的前提下,揹包中可裝物品價值的最大值。

輸入第一行:兩個整數 n 和 c ;

第二行~第n+1行:每行兩個整數vi與wi,有乙個空格分隔。

輸出乙個數,表示揹包中能得到物品價值的最大值。 

輸入示例

2 10

1 12 2

輸出示例

3

1 #include2

using

namespace

std;

3int a[10001]={},b[10001]={},temp1,temp2;//

b[i]為上一行,a[i]為這行

4int

main()516

}17for(j=1;j<=c;j++)b[j]=a[j];18}

19 cout<

20 }

view code

揹包問題iii

試題描述

揹包問題,古之經典。題曰:今有n類物品無數,第i種體積為v[i],價值為w[i],揹包的體積為c。求在體積不超容積的前提下,揹包中物品價值最大值。

輸入第一行:兩個整數 n 和 c ;

第二行~第n+1行:每行兩個整數vi與wi,有乙個空格分隔。

輸出乙個數,表示揹包中能得到物品價值的最大值。 

輸入示例

4 1000

1 1000

2 1231

3 1232

4 1010

輸出示例

1000000

其他說明

資料範圍:1<=n<=100 1<=vi,wi<=100;1<=c<=10000; 

1 #include2

using

namespace

std;

3int a[2][10001]={},temp1,temp2;

4int

main()516

}17for(j=1;j<=c;j++) a[0][j]=a[1

][j];18}

19 cout<1

][c];

20 }

view code

揹包問題ⅳ

試題描述

有n個重量和價值分別為wi和vi的物品。從這些物品中挑選出總重量不超過w的物品,求所有挑選方案中價值總和的最大值。

輸入三行,第一行包含兩個正整數n和w,第二行包含n個正整數依次表示i個物品各自的重量,第三行包含n個正整數依次表示i個物品各自的價值。同一行的數兩兩之間有乙個空格分隔。

輸出乙個數,表示價值總和的最大值。

輸入示例

4 52 1 3 2

3 2 4 2

輸出示例

7其他說明

資料範圍:1<=n,vi<=100,1<=w<=10^9,1<=wi<=10^7.

1 #include2

using

namespace

std;

3int a[2][10005]={},t1[101],t2[101];4

intmain()521

else

if(a[0][j-t2[i]]!=0)22

26}27for(int j=1;j<=10001;j++) a[0][j]=a[1

][j];28}

29int ans=0;30

for(int i=1;i<=10001;i++) if(a[1][i]<=w&&a[1][i]!=0) ans=i;

31 cout<

32 }

view code

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

1 for int i 0 i 2for int j w j size i j 3 f j max f j f j size i value i 1 for int i 0 i 2for int j size i j w j 3 f j max f j f j size i value i f w ...

經典01揹包問題

乙個旅行者有乙個最多能裝m公斤的揹包,現在有n件物品,它們的重量分別是w1,w2,wn,它們的價值分別為c1,c2,cn。求旅行者能獲得最大總價值。第 1 行 兩個整數,m 揹包容量,m 200 和n 物品數量,n 30 第 2 到 n 1行 每行兩個整數 wi,ci,表示每個物品的重量和價值。10...

經典的揹包問題

揹包問題i 難度級別 b 執行時間限制 1000ms 執行空間限制 51200kb 長度限制 2000000b 試題描述 有乙個揹包容積為 v 和 n 個物品,並給出每個物品有乙個體積。要求從 n 個物品中,任取若干個裝入揹包內,使揹包的剩餘空間為最小。輸入第一行兩個正整數 v 和 n,分別表示揹包...