openjudge 1017

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\n",sum);
26     }
27     return 0;
28 }

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值