poj 1017 装箱子问题

#include<stdio.h>
int main(void)
{
           int x1,x2,x3,x4,x5,x6,amount,x,y=0;        //x1,x2,x3,.....代表1x1 ,2x2.....的箱子
           while(~scanf("%d%d%d%d%d%d",&x1,&x2,&x3,&x4,&x5,&x6))
           {
                       amount=0;y=0;
                       if(x1+x2+x3+x4+x5+x6==0)
                                    break;
                      amount=x6+x5+x4+(x3+3)/4;      //大小是6,5,4,的小箱子一个大箱子只能放一个,而3的小箱子,

                                                                   //一个大箱子放4个,但是有5个的时候,必须有2个大箱子,所以是(x3+3)/4
                      y=x4*5;   //已经确定了6,5,4,3小箱子的放置位置,现在看看2的箱子插到装有3或4小箱子的大箱子

                                                                  //的最大数目y
                      if(x3%4==3)
                              y+=1;
                      else
                          if(x3%4==2)
                                   y+=3;
                          else
                               if(x3%4==1)
                                     y+=5;
                     if(y<x2)                   //最大可以插入的数目如果小于题目输入的,必须再另外的大箱子来放2小箱子。
                     {
                                 amount+=(x2-y+8)/9;
                     }

                      x=36*amount-36*x6-25*x5-16*x4-9*x3-4*x2;//6,5,4,3,2箱子已经确定好了,看看1小箱子可以插入

                                                                                                       //到他们的间隙中的最大数目x。
                     if(x<x1)   //最大数目小于题目所给的,必须再找大箱子放。
                     {
                           amount+=(x1-x+35)/36;
                     }
                     printf("%d\n",amount);


            }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值