百练1017:装箱问题
2016-03-05 14:33
267 查看
总时间限制: 1000ms 内存限制: 65536kB
描述
一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6。这些产品通常使用一个 6*6*h 的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。现在这个程序由你来设计。
输入
输入文件包括几行,每一行代表一个订单。每个订单里的一行包括六个整数,中间用空格隔开,分别为1*1至6*6这六种产品的数量。输入文件将以6个0组成的一行结尾。
输出
除了输入的最后一行6个0以外,输入文件里每一行对应着输出文件的一行,每一行输出一个整数代表对应的订单所需的最小包裹数。
样例输入
0 0 4 0 0 1
7 5 1 0 0 0
0 0 0 0 0 0
样例输出
2
1
来源
Central Europe 1996
代码如下:
描述
一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6。这些产品通常使用一个 6*6*h 的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。现在这个程序由你来设计。
输入
输入文件包括几行,每一行代表一个订单。每个订单里的一行包括六个整数,中间用空格隔开,分别为1*1至6*6这六种产品的数量。输入文件将以6个0组成的一行结尾。
输出
除了输入的最后一行6个0以外,输入文件里每一行对应着输出文件的一行,每一行输出一个整数代表对应的订单所需的最小包裹数。
样例输入
0 0 4 0 0 1
7 5 1 0 0 0
0 0 0 0 0 0
样例输出
2
1
来源
Central Europe 1996
代码如下:
#include<stdio.h> int main(){//代码源于《程序设计导引及在线实践》 int a,b,c,d,e,f;//a-f对应1*1到6*6的箱子 int u[]={0,5,3,1};//装3*3类箱子不满时可以装2*2类箱子的4种情形 while(scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f)!=EOF){ if(a==0 && b==0 && c==0 && d==0 && e==0 && f==0)break; int x,y;//x代表用于装2*2类箱子的空位,y代表用于装1类箱子的空位 int N=0;//总共所需要的包装的数量 N=f+e+d+(c+3)/4;//统计3*3-6*6类箱子所需要的包装数 x=5*d+u[c%4];//统计4类箱子和3类箱子留给2类箱子的空位 if(b >x){ N+=(b-x+8)/9;//统计算上遗留空位2*2类箱子所占的包装数量 } y=N*36-f*36-e*25-d*16-c*9-b*4;//遗留给1*1类箱子的空位 if(a >y){ N+=(a-y+35)/36; } printf("%d\n", N); } return 0; }
相关文章推荐
- Linux C函数参考手册(PDF版)
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C# partial关键字说明
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua教程(十七):C API简介
- 简单谈谈lua和c的交互
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现打造气泡屏幕保护效果
- C#实现的算24点游戏算法实例分析
- 举例讲解C#编程中委托的实例化使用
- 使用C#代码获取存储过程返回值
- C/C++数据对齐详细解析
- 利用C语言来求最大连续子序列乘积的方法