2.4装箱
这道题比较简单,有点类似枚举所有情况,代码参考了教程做了改进,用数组存储知识,否则要做很多判断。代码已经AC。
1 #include<stdio.h> 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 ",sum); 26 } 27 return 0; 28 }