貪心演算法 裝箱問題

2021-08-15 03:53:54 字數 985 閱讀 2620

貪心演算法中必須設定乙個貪心準則-----來尋求每一步的最優解,但最後往往不是問題的整體最優解。

問題:假設有n個物品,其體積為v1,v2,v3,v4.......v

n,有若干個體積為v的箱子(理論物品的體積應該小於箱子的體積)

要求把所有物品全部裝入箱子中,要求開啟的箱子數最少。

分析:怎樣合理化分配才能使得開啟的箱子數最少呢?首先我們應該把所有的物品體積進行降序排序,先把體積最大的物品進行裝箱

第二個物品從第乙個箱子進行遍歷看第乙個箱子剩餘的空間是否能容納此物品,如果可以就裝入,如果不可以就再開乙個箱子,剩餘

的物品依次類推。------------這也就是裝箱問題的貪心準則。

宣告物品資訊的結構體-------物品編號,物品體積

宣告物品節點和箱子節點的結構體---------相當於所有開啟的箱子拉成了一條鍊錶每個箱子上面的物品又會形成一條鍊錶

#include#include#define n 5

#define v 10

typedef struct

elemg;//物品資訊

typedef struct node

goodslink;//物品節點

typedef struct box

boxlink;//箱子節點

boxlink *binpacking()

//建立物品節點

new1=(goodslink *)malloc(sizeof(goodslink));

new1->gno=g[i].gno;

new1->link=null;

if(!p->hg)//判斷要掛的箱子上是不是null

p->hg=new1;

else

p->reminder=p->reminder-g[i].gv;//每次放入乙個物品都需要算出剩餘空間

}return hbox;

}int main()

}

貪心演算法(裝箱問題)

貪心演算法的基本思想是找出整體當中每個小的區域性的最優解,並且將所有的這些區域性最優解合起來形成整體上的乙個最優解。因此能夠使用貪心演算法的問題必須滿足下面的兩個性質 1.整體的最優解可以通過區域性的最優解來求出 2.乙個整體能夠被分為多個區域性,並且這些區域性都能夠求出最優解。3.區域性最優解不一...

貪心演算法 裝箱問題

描述 乙個工廠製造的產品形狀都是長方體,它們的高度都是h,長和寬都相等,一共有六個型號,他們的長寬分別為11,22,33,44,55,66。這些產品通常使用乙個 66h 的長方體包裹包裝然後郵寄給客戶。因為郵費很貴,所以工廠要想方設法的減小每個訂單運送時的包裹數量。他們很需要有乙個好的程式幫他們解決...

貪心演算法之裝箱問題

貪心準則 1.貪心準則設計演算法過程的每一步都是最優解 2.貪心準則一旦被設計,中途不可改變 裝箱問題 問題描述 1.有若干個體積為v的箱子 2.有n個物品,體積分別為 v1,v2,v3 要求 將所有物品都裝入箱子中,使箱子盡可能的少 貪心準則 1.將所有物品按照體積降序排列 2.每次取出乙個物品 ...