【发布时间】:2010-11-15 20:25:17
【问题描述】:
我有一堆矩形物体,我需要将它们打包到尽可能小的空间中(这个空间的尺寸应该是 2 的幂)。
我知道各种打包算法可以尽可能地将物品打包到给定的空间中,但是在这种情况下,我需要算法来计算出该空间应该有多大。
例如说我有以下矩形
- 128*32
- 128*64
- 64*32
- 64*32
它们可以被打包成一个 128*128 的空间
_________________ |128*32 | |________________| |128*64 | | | | | |________________| |64*32 |64*32 | |________|________|但是,如果还有 160*32 和 64*64 的,则需要 256*128 的空间
________________________________ |128*32 |64*64 |64*32 | |________________| |_______| |128*64 | |64*32 | | |_______|_______| | | | |________________|___ | |160*32 | | |____________________|_______|有哪些算法能够打包一堆矩形并确定容器所需的大小(到 2 的幂,并且在每个维度的给定最大大小内)?
【问题讨论】:
-
第二种方案不是最优的吗?不应该是 128 乘 224 吗?
-
"这个空间的尺寸应该是 2 的幂" 所以这没有区别,因为这是/现在我不能假设底层硬件无条件地支持非 2 的幂。
-
无论如何它最终使算法更简单(尝试将其全部放入 32x32,如果 nto 则尝试 64x32,然后尝试 64x64、128x64 等):)
-
我在这里放了一种蛮力解决方案stackoverflow.com/a/47698424/1641247