POJ 百練 1017 裝箱問題

2021-05-27 16:24:42 字數 1938 閱讀 6660

問題描述

乙個工廠製造的產品形狀都是長方體,它們的高度都是 h,長和寬都相等,一共有六個

型號,他們的長寬分別為 1*1, 2*2, 3*3, 4*4, 5*5, 6*6.  這些產品通常使用乙個  6*6*h  的長方

體包裹包裝然後郵寄給客戶。因為郵費很貴,所以工廠要想方設法的減小每個訂單運送時的

包裹數量。他們很需要有乙個好的程式幫他們解決這個問題從而節省費用。現在這個程式由

你來設計。

輸入資料

輸入檔案包括幾行,每一行代表乙個訂單。每個訂單裡的一行包括六個整數,中間用空

格隔開,分別為 1*1 至 6*6 這六種產品的數量。輸入檔案將以 6 個 0 組成的一行結尾。

輸出要求

除了輸入的最後一行 6 個 0 以外,輸入檔案裡每一行對應著輸出檔案的一行,每一行輸

出乙個整數代表對應的訂單所需的最小包裹數。

輸入樣例

0 0 4 0 0 1 

7 5 1 0 0 0 

0 0 0 0 0 0 

輸出樣例

2  1 

解題思路

這個問題描述得比較清楚,我們在這裡只解釋一下輸入輸出樣例:共有兩組有效輸入,

第一組表示有 4 個 3*3 的產品和乙個 6*6 的產品,此時 4 個 3*3 的產品占用乙個箱子,另外

乙個 6*6 的產品占用 1 個箱子,所以箱子數是 2;第二組表示有 7 個 1*1 的產品,5 個 2*2

的產品和 1 個 3*3 的產品,我們可以把他們統統放在乙個箱子中,所以輸出是 1。

分析六個型號的產品占用箱子的具體情況如下:6*6  的產品每個會占用乙個完整的箱

子,並且沒有空餘空間;5*5 的產品每個占用乙個新的箱子,並且留下 11 個可以盛放 1*1

的產品的空餘空間;4*4 的產品每個占用乙個新的箱子,並且留下 5 個可以盛放 2*2 的產品

的空餘空間;3*3 的產品情況比較複雜,首先 3*3 的產品不能放在原來盛有 5*5 或者 4*4 的箱子中,那麼必須為 3*3 的產品另開新的箱子,新開的箱子數目等於 3*3 的產品的數目除以

4 向上取整;同時我們需要討論為 3*3 的產品新開箱子時,剩餘的空間可以盛放多少 2*2 和

1*1 的產品(這裡如果有空間可以盛放 2*2 的產品,我們就將它計入 2*2 的空餘空間,等到

2*2 的產品全部裝完,如果還有 2*2 的空間剩餘,再將它們轉換成 1*1 的剩餘空間)。我們

可以分情況討論為 3*3 的產品開啟的新箱子中剩餘的空位,共為四種情況:第一種,3*3 的

產品的數目正好是 4 的倍數,所以沒有空餘空間;第二種,3*3 的產品數目是 4 的倍數加 1,

這時還剩 5 個 2*2 的空位和 7 個 1*1 的空位;第三種,3*3 的產品數目是 4 的倍數加 2,這

時還剩 3 個 2*2 的空位和 6 個 1*1 的空位;第四種,3*3 的產品數目是 4 的倍數加 3,這時

還剩 1 個 2*2 的空位和 5 個 1*1 的空位;處理完 3*3 的產品,就可以比較一下剩餘的 2*2

的空位和 2*2 產品的數目,如果產品數目多,就將 2*2 的空位全部填滿,再為 2*2 的產品打

開新箱子,同時計算新箱子中 1*1 的空位,如果剩餘空位多,就將 2*2 的產品全部填入 2*2

的空位,再將剩餘的 2*2 的空位轉換成 1*1 的空位;最後處理 1*1 的產品,比較一下 1*1

的空位與 1*1 的產品數目,如果空位多,將 1*1 的產品全部填入空位,否則,先將 1*1 的空

位填滿,然後再為 1*1 的產品開啟新的箱子。

#include

#include

using namespace std;

int main();

while(scanf("%d%d%d%d%d%d",&b1,&b2,&b3,&b4,&b5,&b6)!=eof)

return 0;

}

POJ 百練 1017 裝箱問題

問題描述 乙個工廠製造的產品形狀都是長方體,它們的高度都是 h,長和寬都相等,一共有六個 型號,他們的長寬分別為 1 1,2 2,3 3,4 4,5 5,6 6.這些產品通常使用乙個 6 6 h 的長方 體包裹包裝然後郵寄給客戶。因為郵費很貴,所以工廠要想方設法的減小每個訂單運送時的 包裹數量。他們...

百練1017 裝箱問題

總時間限制 1000ms 記憶體限制 65536kb 描述 乙個工廠製造的產品形狀都是長方體,它們的高度都是h,長和寬都相等,一共有六個型號,他們的長寬分別為1 1,2 2,3 3,4 4,5 5,6 6。這些產品通常使用乙個 6 6 h 的長方體包裹包裝然後郵寄給客戶。因為郵費很貴,所以工廠要想方...

POJ 1017 裝箱問題(貪心)

大意是只有6 6規格的箱子來裝 雖然是描述三維的,但因為高度相同,因此忽略掉 給你若干個從1 1到6 6規格的箱子,求所需最小箱子數。思路 很明顯應該利用貪心,即優先從最大規格的箱子數來考慮,然後因為在裝完較大規格的箱子後,該箱子可以存在剩餘空間,所以仍應該利用,且仍舊優先裝較小規格中較大的箱子。6...