如何在阵列上使用DFS

时间:2014-03-16 23:44:38

标签: java multidimensional-array depth-first-search

我有一个1维的值列表,它看起来像这个“int [] values'”。我相信我已将它转换为这样的二维列表:

for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4; j++) {
        board[i][j] = values[i * 4 + j];
    }
}

董事会是新的二维价值清单。在板上有数字。 0表示空白,1表示绿色,2表示蓝色,3表示红色。我如何使用深度优先搜索来查找某种颜色的完整路径?

1 个答案:

答案 0 :(得分:0)

  • 制作一个2D数组boolean[][] visited来指定您访问过的点;将所有元素设置为false
  • 浏览两个嵌套循环中的每个点
  • 对于visited[r][c]false的每个点,进入可以递归实现的DFS
  • 在递归DFS调用内部检查该点是否是您的目的地;如果是,请返回true
  • 如果该点具有正确的颜色,请在四个方向上探索其邻居(最多四个)
  • 如果邻居的颜色正确,请将其标记为已访问,并进行递归调用
  • 如果递归调用返回true,则返回true
  • 否则,继续探索其他邻居
  • 完成探索邻居后,请返回false