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

Algorithm for tile connection in a two-dimensional array

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

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

而以下会 return false:

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

  1. 按光栅顺序搜索白色字段
  2. 运行 从那个点开始的 floodfill 算法并标记您访问过的图块
  3. 继续查找是否还有未标记为已访问的白色字段

如果步骤 3 找到未访问的白色,则 return 为假,否则 return 为真。

  1. 将您的结构呈现为图形:如果节点 A 和 B 在图块呈现中具有共同边,则存在节点 A 和 B 之间的边(假设不允许对角线移动)
  2. 运行DFS,记录下你接触过的节点

如果在 运行 2 之后缺少一些节点,则 space 被分区。