简单题意:
以下给定的箱子尺寸高都一样,长和宽不一样,有1*1,2*2,3*3,4*4,5*5,6*6,六种型号。最后都装入6*6*h的箱子里。分别输入6种型号箱子的个数,求最少用几个箱子打包。
解题思路及形成过程:
4*4,5*5,6*6,的有几个就需要几个箱子,2*2和1*1的插空,比较难处理的是3*3的。可以4个一起,也可以插入2*2的和1*1的。
感想:
哦两天多 积极性下降了哎
ac代码:
#include<iostream>
using namespace std;
int main()
{
int n,a[6],x,y;//x代表可以填充的1*1的空间,y代表2*2的
int i;
while(1)
{
for(i=1;i<=6;i++)
{
cin>>a[i];
}
if(a[1]==0&&a[2]==0&&a[3]==0&&a[4]==0&&a[5]==0&&a[6]==0)
break;
n=a[4]+a[5]+a[6]+(a[3]+3)/4;//先不给1*1和2*2箱子
y=a[4]*5;//每个4*4里还可以放5个2*2
/*以下是讨论在3*3的箱子里放2*2的情况*/
if(a[3]%4==3) y+=1;
else if(a[3]%4==2) y+=3;
else if(a[3]%4==1) y+=5;
if(a[2]>y) n+=((a[2]-y)+8)/9;//如果给定的箱子装不下2*2的,还需要另开箱子
x=36*n-36*a[6]-25*a[5]-16*a[4]-9*a[3]-4*a[2];
if(a[1]>x) n+=((a[1]-x)+35)/36;//同理
cout<<n<<endl;
}
return 0;
}