如何在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
。