zoukankan      html  css  js  c++  java
  • A

    Problem Description

    一个工厂生产的产品形状都是长方体,高度都是h,主要有1*1,2*2,3*3,4*4,5*5,6*6等6种。这些产品在邮寄时被包装在一个6*6*h的长方体包裹中。由于邮费很贵,工厂希望减小每个订单的包裹数量以增加他们的利润。因此他们需要一个好的程序帮他们解决这个问题。你的任务就是设计这个程序。

    Input

    输入包括多组测试数据,每一行代表一个订单。每个订单里的一行包括六个整数,用空格隔开,从小到大分别为这6种产品的数量。6个0表示文件结束。

    Output

    针对每个订单输出一个整数,占一行,代表对应的订单所需的最小包裹数。没有多余的空行。

    Sample Input

    0 0 4 0 0 1
    7 5 1 0 0 0
    0 0 0 0 0 0

    Sample Output

    2
    1

    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    int main(int argc, const char * argv[])
    {
        int boxA,boxB,boxC,boxD,boxE,boxF;//不同底面积箱子数量
        int left2x2,left1x1;
        int countBox;//使用大箱子数量
        
        while(cin>>boxA>>boxB>>boxC>>boxD>>boxE>>boxF)
        {
            //结束条件
            if (boxA == 0 && boxB == 0 && boxC == 0 && boxD == 0 && boxE == 0 && boxF == 0)
            {
                break;
            }
            //体积为4、5、6的有一个就需要一个箱子,体积为3的需要boxC / 4个箱子
            countBox = boxD + boxF + boxE + (boxC + 3) / 4;
            
            //剩余的空间我们采取贪心的策略,先放2 * 2的箱子,4 * 4的箱子还剩下boxD * 5个2 * 2的空间
            left2x2 = boxD * 5;
            
            //对于3 * 3底面积的需要分情况讨论
            if (boxC % 4 == 3) //3 * 3的箱子装完了还剩下3个,只留下了1个2 * 2的空间
            {
                left2x2 += 1;
            }
            else if (boxC % 4 == 2) //这种情况下留下了3个2 * 2的空间
            {
                left2x2 += 3;
            }
            else if (boxC % 4 == 1) //注意哦,这种情况下最多可以留下5个2 * 2的空间哈
            {
                left2x2 += 5;
            }
            
            if (left2x2 < boxB)
            {
                countBox += (((boxB - left2x2) + 8) / 9);  //2 * 2箱子没地方的,开新箱子。
            }
            //解决了2 * 2的空间还剩下1 * 1的,总体积减去所有其他箱子的体积,就剩下1 * 1的空间了。
            left1x1 = 36 * countBox - 36 * boxF - 25 * boxE - 16 * boxD - 9 * boxC - 4 * boxB;
            if  (left1x1 < boxA)//空间不够,加大箱子
            {
                countBox += (((boxA - left1x1) + 35) / 36);
            }
            cout
  • 相关阅读:
    Extjs4 关于设置form中所有子控件为readOnly属性的解决方案
    Chrome调试(转)
    ExtJS4 动态加载
    CSS display和visibility的用法和区别
    利用Java调用OpenCV进行人脸识别
    Mac上安装openCV(Java版本)
    关于mysql的Fetch Time 和 Duration Time
    数据库相关中间件介绍
    JVM和java应用服务器调优
    探索 ConcurrentHashMap 高并发性的实现机制
  • 原文地址:https://www.cnblogs.com/yangf428/p/10028520.html
Copyright © 2011-2022 走看看