演算法分析與設計 09 0 1揹包問題

2021-07-24 14:00:47 字數 674 閱讀 3728

0-1揹包問題

#include using namespace std;

#define num 50 //物品數量的上限

#define cap 1500 //揹包容量的上限

int w[num] ; //物品的重量

int v[num]; //物品的價值

int p[num][cap]; //用於遞迴的陣列

int min(int m,int n)

int max(int m,int n)

//形參c是揹包的容量w,n是物品的數量

void knapsack(int c,int n)

p[1][c]=p[2][c];

if(c>=w[1])

p[1][c]=max(p[1][c],p[2][c-w[1]]+v[1]);

}void traceback(int c,int n,int x)

{ for(inti=1;i執行效果:

演算法設計與分析 0 1揹包問題

問題描述 給定n個重量為,價值為的物品和乙個容量為c的揹包,0 1揹包問題是求這些物品中的乙個 最有價值的子集,並且能夠裝入揹包中。基本演算法思想 暴力法 用暴力法解決0 1揹包問題,需要考慮給定n個物品集合的所有子集,找出所有重量不超過揹包重量的子集,計算其每個子集的 總價值,比較輸出價值最大的那...

變種 揹包問題 演算法設計 揹包問題

題目 乙個旅行者準備隨身攜帶乙個揹包,可以放入揹包的物品有n種,每種物品的重量和價值分別為wj,vj 如果揹包的最大重量限制是b,怎樣選擇放入揹包的物品以使得揹包的價值最大?目標函式 約束條件 演算法設計 設fk y 表示只允許裝前k 種物品,揹包總重不超過y 時揹包的最大價值。fk y 有兩種情況...

演算法設計 揹包問題

研究生課程系列文章參見索引 在信科的那些課 乙個旅行者準備隨身攜帶乙個揹包,可以放入揹包的物品有n種,每種物品的重量和價值分別為wj,vj 如果揹包的最大重量限制是b,怎樣選擇放入揹包的物品以使得揹包的價值最大?目標函式 約束條件 設fk y 表示只允許裝前k 種物品,揹包總重不超過y 時揹包的最大...