0 1揹包問題(c c )

2021-07-22 04:50:59 字數 1236 閱讀 7620

問題介紹:現在有乙個可以載重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 ...