我正在开发一个游戏,遇到了一个问题需要解决,这个问题涉及到处理类似于装箱问题的组件布局。
简要概括我需要做的是,假设我有一个类似以下空间的空间:
+------------+---------+------------+
| 0 | 1 | 2 |
| | | |
| | | |
| | | |
+------------+---------+------------+
| 3 | 4 | 5 |
| | | |
| | | |
+------------+---------+------------+
| 6 | 7 | 8 |
| | | |
| | | |
| | | |
+------------+---------+------------+
这是一个每个角落单元格为4x4而中心单元格为3x3的方格(所以其余单元格为3x4或4x3)。然后我有一组要放置在这些块内的元素,这些元素的大小可以从1x1到3x3不等(我认为还不需要任何4x4,但这不应该改变任何事情)。当然,这些元素不能跨越线条,必须完全位于一个单独的块内。
哪种方式最好分配它们?假设我不想让它们都黏在一起,如果没有必要的话(例如,如果周围有足够的空间将它们分开,则不要将两个元素放在一起)。我正在寻找一个简单的算法,也因为情况相当有限..
附加问题:假设除了这9个块之外还有其他块(可能还有其他3-4个),如何将它们与新块进行优先排序?(我的意思是,在填充阈值达到之前,不使用其他块)。
当然,我只是寻找一般想法,不需要具体实现 :)