Openjudge noi 19 装箱问题

题目:

描述
一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为11, 22, 33, 44, 55, 66。这些产品通常使用一个 66h 的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。现在这个程序由你来设计。
输入
输入文件包括几行,每一行代表一个订单。每个订单里的一行包括六个整数,中间用空格隔开,分别为11至66这六种产品的数量。输入文件将以6个0组成的一行结尾。
输出
除了输入的最后一行6个0以外,输入文件里每一行对应着输出文件的一行,每一行输出一个整数代表对应的订单所需的最小包裹数。
样例输入
0 0 4 0 0 1
7 5 1 0 0 0
0 0 0 0 0 0
样例输出
2
1

参考代码:

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 6;

int a[N];

void init() {
    memset(a, 0, sizeof(a));
}

int numofboxes() {
    int box = 0;//一共要装产品的盒子的个数;
    box += a[5];//6*6*h的产品每个都需要装满一个盒子;
    box += a[4];//5*5*h的产品, 每个产品装一个盒子, 之后会产生11个空格, 但空格仅满足放1*1*h的产品;
    a[0] = max(0, a[0] - a[4] * 11);//1*1*h的产品可能不够, 也可能有剩余, 剩余的话则之前装5*5*h的盒子都已经填满;//之后a[0]表示剩余的1*1*h的产品数;
    box += a[3];//填充4*4*h的产品;
    if (a[1] >= a[3] * 5) {//一个4*4*h的产品装入后还剩5个2*2*h的空间;//a[3] * 5表明一共有含有4*4*h的盒子的数目中的空余格子, 每个盒子都可以最多装5个2*2*h的产品;
        a[1] -= a[3] * 5;//填充2*2*h的产品;  
    }
    else {//2*2*h的产品不够;
        a[0] = max(0, a[0] - 4 * (a[3] * 5 - a[1]));//再用1*1*h的产品填充本应放2*2*h的产品的空间;
        a[1] = 0;//一个2*2空间可放4个1*1*h的产品;
    }
    box += (a[2] + 3) / 4;//每4个3*3*h的产品独占一个盒子;//此时一个产品不足以单独占一个盒子;
    a[2] = a[2] % 4;//余下的3*3*h的产品数;
    if (a[2]) {//有剩余的3*3*h的产品;
        if (a[1] >= 7 - 2 * a[2]) {//2*2*h的产品还有剩余;//1个盒子内可放1个3*3*h的产品加5个2*2*h的产品加7个1*1*h的产品;
            a[1] = a[1] - (7 - 2 * a[2]);
            a[0] = max(0, a[0] - (8 - a[2]));
        }   
        else {//2*2*h的产品没有剩余;
            a[0] = max(0, a[0] - (36 - 9 * a[2] - 4 * a[1]));//一个盒子中除去3*3*h的产品和2*2*h的产品的位置, 剩下的位置就是装1*1*h的产品的位置;
            a[1] = 0;
        }
    }
    box += ((a[1] + 8) / 9);//如果还有剩余的2*2*h的产品, 则添加;//一个盒子最多可以装9个2*2*h的产品;
    a[1] = a[1] % 9;//剩余的2*2*h的产品数目;
    if (a[1]) {//如果还有剩余的2*2*h的产品;
        a[0] = max(0, a[0] - (36 - 4 * a[1]));//一个2*2*h的产品可占4个格子;
    }
    box += (a[0] + 35) / 36;//一个盒子最多可以放36个1*1*h的产品;
    return box;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    while (cin >> a[0] >> a[1] >> a[2] >> a[3] >> a[4] >> a[5]) {
        if (a[0] == 0 && a[1] == 0 && a[2] == 0 && a[3] == 0 && a[4] == 0 && a[5] == 0) {
            break;  
        }
        int ans = numofboxes();
        cout << ans << endl;    
    }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 生活大爆炸版石头剪刀布 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,...
    bbqub阅读 445评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 问题描述 一个工厂制造的产品形状都是长方体,它们的高度都是 h,长和宽都相等,一共有六个 他们的长宽分别为 1...
    指尖极光阅读 393评论 0 0
  • Vigenère 密码 题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加...
    bbqub阅读 700评论 0 0
  • 01 三月对我来说是被自己忽悠过去的一个月,工作上发生了些变化,却没多大进展,而且总在以“需要时间,慢慢来”为借口...
    王阿萌阅读 633评论 0 0