根据我对垃圾箱包装的理解,您正在尝试将预定且通常不同尺寸的物体装入一个或多个容器或预定固定尺寸的“垃圾箱”中。我有一个问题,我有一个固定大小的容器和必须适合它的固定数量的元素。不同之处在于我的元素不是固定大小,但可以调整为特定大小的任意倍数数字。例如:
假设我有 3 个对象或元素,它们必须完全适合 280x420 的容器,并且对象的大小必须重新调整为 140 的倍数。
因此,它可以像这样适合:(或垂直翻转)
+----------+----------+
| 140x140 | 140x140 |
| | |
| | |
+----------+----------+
| 280x280 |
| |
| |
| |
| |
+---------------------+
或:(或水平翻转)
+----------+----------+
| 140x210 | 140x420 |
| | |
| | |
| | |
+----------+ |
| 140x210 | |
| | |
| | |
| | |
+----------+----------+
最终,每个盒子的大小将根据统计动态确定。(例如,如果一个项目有 90% 的统计数据,而另外两个有 2% 和 8% 的统计数据,那么显然 90% 会得到更大的盒子。)但是,我尽量不要过于复杂还没有,所以只是创建一个算法来填充容器是我现在的主要目标。
我一直在研究不同的算法,但还没有想出一个理想的方法来尝试这个。任何指针?例子?现有的数学或其他类似的算法?
一个更复杂的例子是:6 个项目,560x420 的容器。元素 JSON:
{ "0": "432", "1": "389", "2": "403", "3": "190", "4": "215", "5": "832" }
一种可能的呈现方式:
+----------+----------+---------------------+
| 140x280 | 140x140 | 280x140 |
| (0,1, | (3 or 4) | (2) |
| or 2) | | |
| | | |
| +----------+---------------------+
| | 140x140 | 280x280 |
| | (3 or 4) | (5) |
| | | |
| | | |
+----------+----------+ |
| 280x210 | |
| (0,1, or 2) | |
| | |
| | |
+---------------------+---------------------+