c 簡單解決0 1揹包問題

2021-10-04 16:18:00 字數 1033 閱讀 2332

動態規劃基本思想:

c++**如下:

#include

using

namespace std;

#define m 21

int p[m]

[m];

//記錄前i個商品揹包容量為j時的最大價值

int rec[m]

[m];

//記錄商品是否被選擇

intknapsackdp

(int n,

int c,

int*v,

int*f)

;//求解**

intprint

(int n,

int c,

int*v,

int*f)

;main()

for(

int i=

0;i<=c;i++

) p[0]

[i]=0;

for(

int i=

0;i<=n;i++

) p[i][0

]=0;

knapsackdp

(n,c,v,f)

; y =

print

(n,c,v,f)

;// cout"\n成功!"

;return0;

}int

knapsackdp

(int n,

int c,

int*v,

int*f)

//求解**

else}}

}int

print

(int n,

int c,

int*v,

int*f)

//輸出最優求解方案

else

cout<<

"不選商品"

<} cout<<

"\n總的最大價值為:"

[c];

}

簡單0 1揹包問題

有乙個揹包能裝的重量maxw 正整數,0 maxw 20000 同時有n件物品 0 n 100 每件物品有乙個重量wi 正整數 和乙個價值pi 正整數 要求從這n件物品中任取若干件裝入揹包內,使揹包的物品價值最大。第1行 揹包最大載重maxv,物品總數n 第2行到第n 1行 每個物品的重量和價值 乙...

完美解決揹包問題 01揹包 完全揹包

01揹包 每種物品就有乙個 c 3,2,6,7,1,4,9,5 cost 單個物品所佔容量 v 6,3,5,8,3,1,6,9 每個物品的價值 target 15 揹包容量 f 0 for i in range 0,target 1 初始化 元素個數為揹包大小加1 target 1 n len c ...

01揹包問題 C

有i件物品和乙個容量為volume total的揹包。第n件物品的體積是c n 價值是w n 體積是指物品在揹包中佔據的位置,即放入的物品的總體積不能揹包總容量 每種物品僅有一件,可以選擇放或不放。求解將哪些物品裝入揹包可使價值總和最大。輸入物品的總個數i,和揹包的最大容積volume total ...