問題介紹:現在有乙個可以載重w的揹包和n個物品,每個物品的重量和**分別為wi
和vi ,請選擇所裝物品,使得在不超過揹包載重的前提下,揹包裡的物品**最高。
#include
#include
using
namespace
std;
/*w 揹包最大載重
n 物品總數
ws 物品重量
vs 物品價值
res[i][j] 表示針對前i個物品,當揹包的最大載重為j時,能放物品的最大價值
choice[i] =0表示第i個物品不選擇
*/int main()
vector
choice(n + 1, 0);
int** res = new
int* [n + 1];
for (int i = 0; i <= n; i++)
//遍歷所有的物品
for (int i = 0; i <= n; i++)
else
else}}
}int maxvalue = res[n][w];
int maxweight = w;
//輸出選擇方案
while (maxvalue)}}
cout
<< "最優方案:"
<< endl;
for (int i = 1; i <= n; i++)
}cout
<< "the max value is "
<< res[n][w] << endl;
for (int i = 0; i <= n; i++)
return
0;}
#include
#include
using
namespace
std;
/*w 揹包最大載重
n 物品總數
ws 物品重量
vs 物品價值
res[j] 表示當揹包的最大載重為j時,能放物品的最大價值
*/int main()
//這裡的i是代表前i個物品子集
for (int i = 0; i < n; i++)}}
cout
<< "the max value is "
<< res[w] << endl;
return
0;}
C C 之01揹包問題
問題描述 給定n個物品,每個物品有乙個重量w和乙個價值v.你有乙個能裝m重量的揹包.問怎麼裝使得所裝價值最大.每個物品只有乙個.輸入格式 輸入的第一行包含兩個整數n,m,分別表示物品的個數和揹包能裝重量。以後n行每行兩個數wi和vi,表示物品的重量和價值 輸出格式 輸出1行,包含乙個整數,表示最大價...
揹包問題 01揹包問題
n個物品,總體積是v,每個物品的體積的vi,每個物品的最大價值是wi,在不超過v的體積下求最大價值 eg揹包容積為 5 物品數量為 4 物品的體積分別為 物品的價值分別為 思路定義乙個二位陣列int f new int n 1 v 1 f i j 就表示在1 i個物品中選取體積小於v的情況的最大價值...
揹包問題 01揹包
有n件物品和乙個容量為v的揹包。第i件物品的重量是c i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。01揹包中的 01 就是一種物品只有1件,你可以選擇放進去揹包即1,也可以選擇不放入揹包中即0。include include using namespace std const int ...