動態規劃基本思想:
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 ...