您的位置:首页 > 其它

2016SDAU课程练习一1017

2016-03-22 20:14 309 查看
简单题意:

以下给定的箱子尺寸高都一样,长和宽不一样,有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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: