我有一个容器,有一定的宽度和高度。我有一堆 block 需要放入容器中,但我需要计算这些 block 可以容纳的最大尺寸。
例如:
到:
我猜它类似于这个question但他的代码是 jquery 并且适用于文本。我只想要伪代码或某种形式的算法来说明如何执行此操作。
最佳答案
假设,如图所示,所有 block 都具有相同的高度和方向,您可以创建一个包含 block 长度的数组 A
。
如果目标是在给定的边界矩形中最优地打包 block ,那么解决 subset sum problem找到最接近最大长度但又不会变大的一组 block 。删除第一行的那些 block ,并对其余 block 重复该过程。
如果目标是找到最小的(面积)边界矩形,那么您应该看看这篇论文:Fast Optimizing Rectangle Packing Algorithm for Building CSS Sprites .它还涵盖了 block 的高度可能不同的情况。
如果方 block 可以有不同的方向,那么问题就更难了 packing problem .
关于algorithm - 找到填充容器的最大矩形尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8959533/