装箱问题c语言实现(算法分析)

装箱问题c语言实现(算法分析)

ID:33656405

大小:144.50 KB

页数:10页

时间:2019-02-28

装箱问题c语言实现(算法分析)_第1页
装箱问题c语言实现(算法分析)_第2页
装箱问题c语言实现(算法分析)_第3页
装箱问题c语言实现(算法分析)_第4页
装箱问题c语言实现(算法分析)_第5页
资源描述:

《装箱问题c语言实现(算法分析)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、...算法分析题目:装箱(BinPacking)问题院别:数学与计算科学学院专业:信息与计算科学姓名:蒋文明学号:0800710313指导老师:宁黎华日期:2011.06.9WORD格式整理...目录一、问题描述....................................1二、问题分析....................................1三、代码实现....................................2四、测试结果....................................3五、心得体会...

2、.................................4六、源程序......................................4WORD格式整理...一、问题描述 一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1,2*2,3*3,4*4,5*5,6*6.这些产品通常使用一个6*6*h的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。二、问题分析对于6*6的一个箱子来说,最多

3、只能放一个6*6或一个5*5或4*4的盒子,所以我们初始化需要的箱子数时就是这这几种箱子的个数和,对于3*3的箱子来说,我们可以放一个或2个或3个或4个,这我们可以通过整除和取模来确定放了3*3盒子的箱子数,再把它加入到总箱子数中,接下来我们就是把1*1和2*2的盒子塞进前面所需的箱子中,当塞不完时再来新增盒子,我们首先要将前面的箱子剩余的空间统计出来,并且要以2*2的优先考虑,因为我们可以把多余的2*2的位置变为填充4个1*1的,毕竟1*1的只要有空间随处都可以塞。所以当我们的箱子要是装了1个5*5的盒子的话,那么它就只能塞1*1的了,一个可以塞11个1

4、*1的,对于装了4*4的盒子的话,那么还可以装5个2*2的盒子,暂且不要去转话成1*1的,除非没办法只能装1*1的,对于3*3的话就可以根据取模之后一个箱子剩下的空间了,如果一个箱子中只放了一个3*3的,那么还剩下3个3*3的空间可以放,我们知道可以放5个2*2的和7个WORD格式整理...1*1的,对于放了2个3*3的箱子,我们剩下的空间可以放3个2*2的以及6个1*1的,对于放了3个3*3的箱子,我们只能放1个2*2的和5个1*1的,这样一来我们就统计出了此时可以放2*2以及1*1的空间到底有多少,接下来我们就放箱子进去,放一个就减一个,直到1*1的和

5、2*2的为0。三、代码实现(C语言)C语言代码主要有三部分组成,main()函数、Input()和Output()。Input()函数主要接收键盘输入的值(各型号产品的数量),将其存入数组product[n]中。Output()对各种类型的产品进行逻辑判断,优先让型号为6*6、5*5、4*4、3*3的产品装入箱子,然后再将型号为2*2、1*1的产品插入之前装的箱子2*2的先插入,之后插入1*1的,如果都插满了还有1*1或2*2的产品,就在新开箱子将其装入,直到所有的产品都被装入箱子。最后打印输出每个箱子具体装入产品及型号的情况和总共用的箱子数。WORD格式

6、整理...四、测试结果WORD格式整理...四、心得体会时间飞逝,转眼间一个学期又过去了,在上算法分析理论课的过程中,我对很多经典的算法有了更深层次的了解。解决同一个问题有很多不同的算法,所以在选择算法的过程中要考虑很多因素,一点小小的改进程序执行的时间可能就会缩短好几倍,算法的效率成了评价一个算法好坏的不可或缺的一个标准。这次课设,我选择了装箱(BinPacking)问题,在实例化题目和设计算法的过程中,我查阅了很多相关的资料,在此我也学到了很多有关算法设计方面的知识,程序的编写和调试也花了我很多时间,最终通过自己的努力完成了课程设计。在此,我要感谢课设

7、的指导老师!五、源程序#include#defineBOX_VAL36#defineN6intproduct[N];//存放各种类型的产品数量intboxNum=0;//存放订单需要的箱子数目voidInput();voidOutput();voidmain(){Input();Output();printf("该订单需要的箱子数目为:%d",boxNum);printf("");}WORD格式整理...//用来输入每种产品的数量,保存在product[N]数组中voidInput(){inti;printf("Pleaseinp

8、utproductsinformation!");for(i=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。