POJ 百練 1017 裝箱問題

2021-08-19 14:20:21 字數 1051 閱讀 2464

問題描述

乙個工廠製造的產品形狀都是長方體,它們的高度都是 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  

#include

#include

using namespace std;

int main()

;//表示3*3的產品分別是4k,4k+1,4k+2,4k+3時,3*3產品開啟的新箱子中剩餘2*2的空位數

while(1)

{cin>>a>>b>>c>>d>>e>>f;

if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0)

break;

n=d+e+f+(c+3)/4;//這裡指必須要單獨裝乙個箱子裡

y=5*d+u[c%4];//這裡表示的是前面必須單獨乙個箱子之後,空餘位置可以裝x個2*2的箱子

if(b>y)

n+=(b-y+8)/9;

x=36*n-36*f-25*e-16*d-9*c-4*b;//所有箱子剩餘的1*1空格

if(a>x)

n+=(a-x+35)/36;

cout<

裝箱問題詳解

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...