【发布时间】:2019-04-01 11:50:22
【问题描述】:
对于我的任务,我必须编写一个装箱算法,其中有 N 个具有不同体积的对象。它们都必须装在第 V 卷的盒子中。使用递减排序我成功地编写了算法。但另一项任务包括在我以前发现最有效的一些盒子中写出所有可能的装箱变化。比如:
有 4 个物体的体积:4、6、3、2。盒子的体积是 10。使用装箱算法,我发现我需要 2 个盒子。
所有可能的变化是:
4,6 and 3,2
4,3 and 6,2
4,2 and 6,3
6 and 4,3,2
我无法为这个问题想出合适的算法,我应该从哪里开始?任何帮助将不胜感激。
【问题讨论】:
-
这毫无意义,bin 打包是出了名的 np-awful 与 n!可能的解决方案。在实际程序中总是需要启发式。也许你的老师想让你自己发现这一点。或者,也许你打算练习 std::next_permutation()。我们没有上你的课,所以这只是一个猜谜游戏,请与其他学生讨论。
-
您确定您的基于排序的解决方案是正确的吗?可能值得将其发布在CR 上以便快速检查。
-
也许问题可以更好地描述为:您有 N 个不同体积的对象,您必须使用大小为 10 的盒子将它们放在架子上。输出使用最少数量的盒子的所有可能变化。
标签: c++ algorithm bin-packing