如何在arrays上使用DFS

我有一个一维的值列表,它看起来像这个“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表示红色。 我如何使用深度优先搜索来查找某种颜色的完整路径?

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