码迷,mamicode.com
首页 > 其他好文 > 详细

【蓝桥杯竞赛】装箱问题

时间:2015-04-22 21:59:46      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

==========================================================================================================

思路:

6*6 的产品每个会占用一个完整的箱 子,并且没有空余空间;

5*5 的产品每个占用一个新的箱子,并且留下 11 个可以盛放 1*1 的产品的空余空间;

4*4 的产品每个占用一个新的箱子,并且留下 5 个可以盛放 2*2 的产品 的空余空间;

3*3 的产品情况比较复杂,首先 3*3 的产品不能放在原来盛有 5*5 或者 4*4 的
箱子中,那么必须为 3*3 的产品另开新的箱子,新开的箱子数目等于 3*3 的产品的数目除以 4 向上取整;同时我们需要讨论为 3*3 的产品新开箱子时,

剩余的空间可以盛放多少 2*2 和 1*1 的产品(这里如果有空间可以盛放 2*2 的产品,我们就将它计入 2*2 的空余空间,等到 2*2 的产品全部装完,如果还有 2*2 的空间剩余,再将它们转换成 1*1 的剩余空间)。

我们 可以分情况讨论为 3*3 的产品打开的新箱子中剩余的空位,共为四种情况:

第一种,3*3 的 产品的数目正好是 4 的倍数,所以没有空余空间;

第二种,3*3 的产品数目是 4 的倍数加 1, 这时还剩 5 个 2*2 的空位和 7 个 1*1 的空位;

第三种,3*3 的产品数目是 4 的倍数加 2,这 时还剩 3 个 2*2 的空位和 6 个 1*1 的空位;

第四种,3*3 的产品数目是 4 的倍数加 3,这时 还剩 1 个 2*2 的空位和 5 个 1*1 的空位;

数组u[4]={0, 5, 3, 1}代表这四种情况下的剩余空间2*2的个数

==========================================================================================================

源码:

#include <stdio.h>
void main()
{
    int N, a, b, c, d, e, f, y, x;
      //N 用来存储需要的箱子数目
      //y 用来存储 2*2 的空位数目
      // x用来存储 1*1 的空位数目。
     int u[4]={0, 5, 3, 1};      
    //数组 u 表示 3*3 的产品数目分别是 4 的倍数,4 的倍数+1, 4 的倍数+2, 4 的倍数+3
    //时,为 3*3 的产品打开的新箱子中剩余的 2*2 的空位的个数
    while(true)
    {                                            // 1*1    2*2   3*3   4*4  5*5   6*6
        scanf("%d%d%d%d%d%d", &a,   &b,   &c,  &d,  &e,  &f);
        if (a == 0 && b == 0 && c == 0 && d == 0 && e == 0 && f == 0) break;
        N = f + e + d + (c + 3) / 4;   
        //这里有一个小技巧  (c+3)/4 正好等于 c 除以 4 向上取整的结果,下同  
        y = 5 * d + u[c % 4];
        if(b > y)
            //向上取整
            N += (b - y + 8 ) / 9;
        x = 36 * N - 36 * f - 25 * e - 16 * d - 9 * c - 4 * b;
        if(a > x)
            //向上取整
            N += ( a - x + 35 ) / 36;
         printf("%d\n", N);
    }

 }//代码非原创

【蓝桥杯竞赛】装箱问题

标签:

原文地址:http://www.cnblogs.com/superkrissV/p/4448793.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!