我正在一个网格世界中工作 - 对象仅存在于二维矩阵的整数位置。
一些术语:
方块 - 离散的位置。每个方块都有一个 int x 和 int y 坐标,并且没有两个方块具有相同的 x 和 y 配对。
相邻的:如果两个方块X和Y的x或y坐标之差的绝对值不大于1,则方块X与方块Y是相邻的。简单地说,所有在N, NE, E, SE, S, SW, W和NW方向上紧邻方块都是相邻的。
Legend:
'?' - Unknown Traversibility
'X' - Non Traversable Square
'O' - Building (Non Traversable)
' ' - Traversable Square
问题:
假设有以下的一般情况:
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? O O ? ? ?
? ? ? O O ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
当建筑物毗邻四座建筑物之一时,我希望建造两座建筑物,它们共享一个相邻的正方形,并且该正方形也与至少四座现有建筑物之一相邻,而这个共享的相邻正方形没有被阻塞。
基本有效解决方案:
X X X X X X X X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X X X X X X X
X X X O O X X X X X X O O X X X X X X O O X X X
X X X O O X X X X X X O O X X X X X O O O X X X
X X X O X X X O X X X X
O O X X X O X X X X X X X X
X X X X X X X X X X X
目前,我遍历四个建筑物相邻的所有可遍历方块,并寻找具有3个相邻可遍历方块的方块,但有时会出现以下情况:
X X X X X X X X X X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X X X X X X X X
X X X X X X X X X X O X X X X X O X
X X X O O X X X X X O O O X X X O O O X X
X X X O O X X X X X O O X X X X O O X X
X X X X X X X X X X X X X X
X X X O O X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X X X
您有没有想过如何优化我的算法?
编辑:添加了另一个失败的案例。
编辑:我还想知道是否存在一种可能的配置,可以满足这些条件。我不能保证一定有可行的解决方案,如果没有成功的方法,我希望不要尝试。