标准实用
算法分析
题 目: 装箱( Bin Packing )问题
院 别: 数学与计算科学学院
专 业: 信息与计算科学
姓 名: 蒋文明
学 号: 0800710313
指导老师: 宁黎华
日 期: 2011. 06. 9
文案大全
标准实用
目 录
一、 问题描述 1
二、 问题分析 1
三、 代码实现 2
四、 测试结果 3
五、 心得体会 4
六、 源程序 4
文案大全
标准实用
文案大全
标准实用
一、 问题描述
一个工厂制造的产品形状都是长方体,它们的高度都是 h ,长和宽都相
等,一共有六个型号,他们的长宽分别为 1*1 , 2*2 , 3*3 , 4*4 , 5*5 ,
6*6. 这些产品通常使用一个 6*6*h 的长方体包裹包装然后邮寄给客户。 因
为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他
们很需要有一个好的程序帮他们解决这个问题从而节省费用。
二、 问题分析
对于 6*6 的一个箱子来说,最多只能放一个 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*1 的,对于
装了 4*4 的盒子的话,那么还可以装 5 个 2*2 的盒子,暂且不要去转话成
1*1 的,除非没办法只能装 1*1 的,对于 3*3 的话就可以根据取模之后一
个箱子剩下的空间了,如果一个箱子中只放了一个 3*3 的,那么还剩下