【问题标题】:Algorithm for tile connection in a two-dimensional array二维数组中瓦片连接的算法
【发布时间】:2015-11-21 12:47:44
【问题描述】:

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

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

而以下将返回 false:

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

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

【问题讨论】:

  • 你想要一个整列都是黑色的情况,这意味着如果任何列有任何空白,它就会返回 true
  • 你可能想看看connected components算法。它与您要解决的问题非常相似。

标签: arrays algorithm path-finding


【解决方案1】:
  1. 按光栅顺序搜索白色字段
  2. 从该点运行floodfill 算法并标记您访问过哪些图块
  3. 继续搜索,看看是否还有没有标记为已访问的白色字段

如果步骤 3 找到未访问的白色,则返回 false,否则返回 true。

【讨论】:

    【解决方案2】:
    1. 将您的结构表示为图形:如果节点 A 和 B 在图块表示中具有共同的边,则存在节点 A 和 B 之间的边(假设不允许对角线移动)
    2. 运行 DFS,并记录您接触过的节点。

    如果运行2后有部分节点丢失,则空间被分区。

    【讨论】:

      猜你喜欢
      • 2012-05-26
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      相关资源
      最近更新 更多