我正在研究空间堆叠问题......目前我正在尝试以 2D 解决,但最终将不得不在 3D 中完成这项工作。
我将空间划分为围绕中心块的 nxn 个正方形,因此 n 总是奇数......我试图找到任何尺寸小于 nxn 的矩形(例如 1x1、1x2、2x2 等)的位置数量放置在中间正方形不可用的地方。
到目前为止,我有这个..
total number of rectangles = ((n^2 + n)^2 ) / 4
..还有正方形的总数= (n (n+1) (2n+1)) / 6
但是,我一直在制定一个公式来找出其中有多少是不可能的,因为中间的广场会被占用。
例如:
[] [] []
[] [X] []
[] [] []
3 x 3 板...有 8 个可能的位置用于存储东西,因为中间正方形正在使用中。我可以使用 1x1 形状、1x2 形状、2x1、3x1 等...
公式给我的矩形数量为: (9+3)^2 / 4 = 144/4 = 36 个堆叠位置 但是由于中间的正方形是不可占用的,这些都不能实现。
手动我可以看到这些是不可能的选择:
1x1 形状 = 1 个不可能(中间正方形) 2x1 形状 = 4 个不可能(任何使用中间正方形的东西) 3x1 = 2 个不可能 2x2 = 4 个不可能等等 不可能的组合总数 = 16
因此,我所追求的解决方案是 3x3 板上 36-16 = 20 个可能的矩形堆叠位置。
我已经在 C# 中对此进行了编码,以通过反复试验来解决它,但我真的很喜欢一个公式,因为我想解决大量的 n 值,并最终制作这个 3D。
谁能指出这些空间/镶嵌问题的任何公式?也非常欢迎任何关于如何将整个矩形公式转换为 3D 的想法!
谢谢!