我有一个矩形数组(长度和宽度)。不保证是正方形,但始终保证是整数。我想尽可能有效地将块放在坐标系中,以便包含所有元素的边界框尽可能小。我也想倾向于一个广场。大小方面的差异不会太大,但我想要一个通用的算法。
我发现这有点难以搜索,只是想找人指点我正确的方向。只是寻找伪代码(语言无关紧要)或者如果需要可以用Java实现的库。性能是一个问题所以我真的需要它在各方面都尽可能高效。
注意:如果我仅限于使用正方形,这会变得更容易,这可能是一种选择。
答案 0 :(得分:3)
维基百科上的Packing problem文章链接到this algorithm,在this paper中描述 - “最佳矩形包装:初步结果”。
答案 1 :(得分:0)
我不确定它与E先生指出的算法相比如何,但是一旦我建立了一个窗口系统,我就需要在屏幕外存储矩形图像。我的方法是:
将存储空间想象为向左倾斜45度,因此您有一个V形垃圾箱。 它有一个“谷点”,在最底部(原点)
\ /
\ /
\/
将一个块放入其中,因此块的底角位于谷点。
现在,从左到右,你有两个山谷点,你可以放下额外的块。 每次将块放入谷点时,都会修改谷点列表。
\ /
\/\/
如果你将一个大块放入一个由小块组成的山谷点,它确实会浪费空间,所以如果可能的话,最好先放入大块。当您放入一个块时,您可以选择浪费最小空间的谷点。
正如我所说,我不知道它与其他算法的比较,但很简单。