貪心演算法 裝箱問題

2021-10-03 20:39:39 字數 1252 閱讀 9434

描述

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

輸入

輸入檔案包括幾行,每一行代表乙個訂單。每個訂單裡的一行包括六個整數,中間用空格隔開,分別為11至66這六種產品的數量。輸入檔案將以6個0組成的一行結尾。

輸出

除了輸入的最後一行6個0以外,輸入檔案裡每一行對應著輸出檔案的一行,每一行輸出乙個整數代表對應的訂單所需的最小包裹數。

樣例輸入

0 0 4 0 0 1

7 5 1 0 0 0

0 0 0 0 0 0

樣例輸出21

這道題可以採用貪心演算法解決,要想使包裹數量最少就要充分利用空間,先放大型號的箱子,如果包裹有剩餘,我們就把小箱子放進,這樣就可以使包裹數量最少。我剛開始做這道題時就是這樣想的,但是我想的太多了,我把每種型號的箱子剩餘的空間全部考慮了,其實我們只需要第二種型號的箱子就行,第一種型號用面積就可以解決。

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

intmain()

if(c%4==

2)if(c%4==

3)yu2+=5

*d;if

(yu2sum+

=(ceil)

((b-yu2)

*1.0/9

);yu1=

36*sum-

36*f-

25*e-

16*d-

9*c-

4*b;

if(yu1sum+

=(ceil)

((a-yu1)

*1.0/36

);cout<}return0;

}

這道題我做了很長時間,主要就是我一直在考慮所有情況,最後才想到用面積解決1*1的箱子。對於乙個不貪心的人來說,貪心演算法太難了!

貪心演算法 裝箱問題

貪心演算法中必須設定乙個貪心準則 來尋求每一步的最優解,但最後往往不是問題的整體最優解。問題 假設有n個物品,其體積為v1,v2,v3,v4.v n,有若干個體積為v的箱子 理論物品的體積應該小於箱子的體積 要求把所有物品全部裝入箱子中,要求開啟的箱子數最少。分析 怎樣合理化分配才能使得開啟的箱子數...

貪心演算法(裝箱問題)

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

貪心演算法之裝箱問題

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