二维数组中的瓦片连接算法

时间:2015-11-21 12:47:45

标签: arrays algorithm path-finding

我有一个简单的Tile - 类,其属性为IsBlack。我正在使用二维数组Tile[,])。

我想检查是否所有白色字段(IsBlack=false)都已连接。以下示例将返回true

enter image description here enter image description here

以下将返回false

enter image description here

我有很多想法,但我认为它们效率很低:

  • 从每个单独的图块之间运行路径查找算法(非常低效)
  • 找到黑色瓷砖的“矩形”。 (例如,第一张图片有1个矩形,“边框”)必须只有1.(不确定这种方法是否有效)

2 个答案:

答案 0 :(得分:3)

  1. 按栅格顺序搜索白色字段
  2. 从该点开始运行floodfill算法并标记您访问过哪些图块
  3. 继续搜索以查看是否还有其他未标记为已访问的白色字段
  4. 如果步骤3找到未访问的白色,则返回false,否则返回true。

答案 1 :(得分:0)

  1. 以图形的形式表示您的结构:如果两者在图块表示中具有共同的边缘(假设不允许对角线移动),则存在节点A和B之间的边缘。
  2. 运行DFS,并记录您触摸的节点。
  3. 如果在运行2之后某些节点丢失,则会对空间进行分区。