揹包問題的演算法

2021-04-14 09:38:37 字數 1101 閱讀 6064

《皇后相互捕捉》

)程式設計思想:

演算法描述:

try(i,tw,tv)

i: 物品編號

tw: 當前選擇已達到的物品總重量和 

tv: 本方案可能達到的物品總價值

//考慮物品i不包含在當前方案中的可能性

if(不包含物品i僅是可考慮的)

}

*/

#define n 100

int limitw,  //限制的總重量

totalv,  //全部物品的總價值

maxv;  //所選方案的最大總價值

int option[n], //解的選擇標誌

curoption[n]; //當前解的選擇標誌

struct goods  //物品資料結構

;goods array[n];

int n;  //物品種數

// 引數定義

// i: 物品編號

// tw: 當前選擇已達到的物品總重量和 

// tv: 本方案可能達到的物品總價值

void find(int i,int tw,int tv)

curoption[i] = 0; //恢復物品i不包含狀態

}//考慮物品i不包含在當前方案中的可能性

if(tv-array[i].value > maxv)

}

}

void backpack_problem()

printf("輸入限制的重量/n");

scanf("%d",&limitw);

maxv = 0;

for(k=0;k

curoption[k] = 0;

find(0,0,totalv);

for(k=0;k

if(option[k])

printf("%4d",k+1);

printf("總價值 = %d/n",maxv);

printf("/n/n應用程式正在執行....../n");

演算法(揹包問題 01揹包問題)

01揹包問題 有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次。第 i 件物品的體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出最大價值。輸入格式 第一行兩個整數,n,v,用空格隔開,分別表示物品數量和揹包容積。接下來有 n 行,...

演算法 揹包問題

揹包問題用逆序減少空間複雜度的情況下,揹包問題,如果是多維揹包 質量,容積,個數 則加矩陣維度 如果是01揹包,則逆序內迴圈,如果是完全揹包 每種物品個數不限 則順序內迴圈,如果是混合揹包 限制每種物品的個數 include using namespace std define maxn 110 d...

演算法 揹包問題

什麼是揹包問題呢?就是乙個特定載重的揹包,給你乙個資料表,求解其最優的結果,那麼很顯然嘍 這就是乙個優化問題 那麼我們具體一點!這個揹包載重8千克 李子 4kg 4500元 蘋果 5kg 5700元 士多啤梨 1kg 1100元 橘子 2kg 2250元 甜瓜 6kg 6700元 那,我們使用動態規...