演算法 揹包問題

2021-08-21 15:23:47 字數 916 閱讀 3895

什麼是揹包問題呢?

就是乙個特定載重的揹包,給你乙個資料表,求解其最優的結果,那麼很顯然嘍---》這就是乙個優化問題

那麼我們具體一點!

這個揹包載重8千克;

李子:4kg 4500元;

蘋果:5kg 5700元;

士多啤梨:1kg 1100元;

橘子:2kg 2250元;

甜瓜:6kg 6700元;

那,我們使用動態規劃,使用每步都要求是最優解的辦法,就可以解出來,這個和數學建模演算法裡面一樣,還要一些差不多的東西,今天我們就先看一下這個題的da**;c++;

#include #include #include #includeusing namespace std;

#define l 8

#define n 5

#define m 1

/*使用動態規劃求解,就是每步都選取最優解,然後直到最後*/

struct body ;

typedef struct body aaa;

int main(void) ;//存放放入順序

int value[l + 1] = ;//存放**

int n, i, s, p;//p是剩餘的質量(揹包剩餘)

aaa a,,,, };

for (i = 0; i < n; i++)

} }cout << "物品" << "\t" << "**" << "\n";

//倒著輸出,裝入的水果量,與價值

for (i = l; i >= m; i = i - a[item[i]].size)

cout << "合計" << "\t" << value[l] << endl;

system("pause");

return 0;

}

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

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

演算法 揹包問題

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

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

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