openjudge 1017

2.4装箱 

这道题比较简单,有点类似枚举所有情况,代码参考了教程做了改进,用数组存储知识,否则要做很多判断。代码已经AC。

 1 #include
 2 int main(void)
 3 {
 4     int a,b,c,d,e,f,x,y;
 5     int sum;
 6     int u[4]= {0, 5, 3, 1}; //对应的是当c%4 = 0, 1, 2, 3 时,剩余空间可放2*2大小的个数
 7                             //,采用这种方法可以减少很多if判断
 8     while(1)
 9     {
10         sum = 0;
11         scanf("%d %d %d %d %d %d",&a,&b,&c,&d,&e,&f);
12         if (a == 0 && b == 0 && c == 0 && d == 0 && e == 0 && f == 0) 
13             break;
14         sum = f; //每个包裹只能转一个6*6的
15         sum += e;//每个包裹只能装一个5*5的
16         sum += d;//每个包裹只能装一个4*4的
17         sum += (c+3)/4;//每个包裹可以装4个 3*3的
18         y = 5*d + u[c%4]; 
19         if(b>y)
20             sum += (b-y+8)/9;
21         x = sum *36 - f*36 -e*25 - d*16 - c*9 - b*4;
22         if(a>x)
23             sum += (a-x+35)/36;
24     
25         printf("%d\n",sum);
26     }
27     return 0;
28 }

 

转载于:https://www.cnblogs.com/echoht/p/3669784.html

你可能感兴趣的:(openjudge 1017)