刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

装箱问题
一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6。这些产品通常使用一个 6*6*h 的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。现在这个程序由你来设计。
时间限制:1000
内存限制:65536
输入
输入文件包括几行,每一行代表一个订单。每个订单里的一行包括六个整数,中间用空格隔开,分别为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 

使用微信搜索喵呜刷题,轻松应对考试!

答案:

解析:

【喵呜刷题小喵解析】这个问题可以通过动态规划的方法解决。我们定义 `boxes[i]` 表示使用 `i*i*h` 的长方体包裹能装下的产品数量,初始值为 0。首先,对于每一个订单,我们遍历六种产品,如果产品的数量大于等于 `j`,我们就把 `j` 个产品装进 `j*j*h` 的长方体包裹里,并且把 `j` 个产品从总数中减去。这样,我们就能得到使用 `j*j*h` 的长方体包裹能装下的产品数量。然后,我们计算使用 `i*i*h` 的长方体包裹能装下的产品数量,它是 `boxes[i]` 加上使用 `(i+1)*(i+1)*h` 的长方体包裹能装下的产品数量。最后,我们找出使用 `i*i*h` 的长方体包裹能装下的产品数量最小的 `i`,它就是答案。注意,当 `i=6` 时,我们不需要再计算 `boxes[7]`,因为 `6*6*h` 的长方体包裹已经足够装下所有的产品了。我们读取输入文件,对每一行进行处理,输出对应的最小包裹数。
创作类型:
原创

本文链接:装箱问题 一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share