装箱问题(信息学奥赛一本通-T1226)
生活随笔
收集整理的這篇文章主要介紹了
装箱问题(信息学奥赛一本通-T1226)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目描述】
一個工廠制造的產品形狀都是長方體,它們的高度都是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<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #define INF 999999999 #define N 101 using namespace std;int main() {int a,b,c,d,e,f;int g[4]={0,5,3,1};int x,y;while(cin>>a>>b>>c>>d>>e>>f){if(a+b+c+d+e+f==0)break;int n=f+e+d+(c+3)/4;x=5*d+g[c%4];if(b>x)n+=(b-x+8)/9;y=36*n-36*f-25*e-16*d-9*c-4*b;if(a>y)n+=(a-y+35)/36;cout<<n<<endl;}return 0; }?
總結
以上是生活随笔為你收集整理的装箱问题(信息学奥赛一本通-T1226)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 通讯录管理系统实验报告
- 下一篇: 确定比赛名次(HDU-1285)