【发布时间】:2017-12-19 16:32:58
【问题描述】:
编辑:感谢 Alain 对此的正确描述:
问题在于:一家商店试图找到其纸板箱的最佳尺寸,以便能够包装所有商品,并尽量减少纸箱中浪费的空间。
目前我有一个包含卷的数据集。例如,我需要弄清楚我可以使用的容器数量是否为 5,适合所有这些体积的 5 种最佳尺寸是多少?例如,这个数组包含我的卷:
var numbers =[10, 20, 20, 30, 50, 50, 50, 80];
为了简单起见,我有 2 个容器。大小分别为 50 和 80。
10 适合 50,但浪费是 40。20 也适合 50,但浪费是 30,依此类推。 50 适合 50,但浪费为 0。同样适用于 80。总共浪费为 120。
但如果尺寸不同怎么办? 60 和 80。那么总浪费将是 180。
(60-10) + (60-20) + (60-20) + (60-30) + (60-50) + (60-50) + (60-50) + (80-80)
我的问题是,确定容器大小的最有效方法是什么?假设您知道可以使用的容器数量以及数组中的数量(在本例中为卷)。
例如,如果我不知道我的容器的大小应该是 50 和 80 怎么办。如果我只知道我可以使用多少个容器以及每个对象的体积,我将如何计算最佳正确大小?
有什么算法可以解决这个问题,如果有,你能举个例子吗?我尝试查找诸如垃圾箱包装、背包和 k-means 之类的东西,但我不太清楚如何将它们应用于这个问题。我只是想计算出哪些尺寸最适合以最少的浪费存储所有卷。
我希望我对这个例子很清楚,如果不是,请询问更多。先谢谢了。
【问题讨论】:
-
对你的值进行排序,然后按降序排列,如果合适的话,把它放进去。循环结束后,你应该有最小的浪费......
-
所以你不能在一个容器中放置多个对象?
-
@UsagiMiyamoto ,但是如果大小未知怎么办?我认为使用这种方法,您需要知道容器大小对吗?
-
那么说你有两种类型的容器是否正确?问题是否类似于商店试图找到能够包装所有商品的最佳纸板箱尺寸,并试图最大限度地减少纸箱中的浪费空间?
-
@sabuzyra 啊我明白了,所以我原来的问题的答案是肯定的。如果你告诉我,可能会更直接。
标签: javascript arrays algorithm containers