寻找湖泊' (在网格中包含0)?

时间:2018-05-06 09:32:39

标签: algorithm

最近我学习了BFS和DFS及其应用程序。一旦常见应用程序在网格中找到岛屿。我已经开始工作并了解它是如何工作的。但是,我对一个非常令人难以置信的场景进行了研究。那就是,如何才能找到岛内的湖泊?例如:

00000000000
00111111000
01110011100
01100000110
01110011100
01111111100
00000000000

1s周围的0可归类为海洋。

    00000000000
    00111111000
    01110011100
    01100000000
    01110011100
    01111111100
    00000000000

在上面的示例中,没有湖,与第一个网格不同。

我目前正在做的是使用DFS / BFS查找所有连接的0。验证这些0被1包围已经成为问题。我可以就此得到一些指导吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

对于其中一个单元格而言,零的连通分量不是湖泊,这就是:

  • 单元格位于第一列
  • 单元格位于第一行
  • 单元格位于最后一列
  • 单元格位于最后一行。

从第一个/最后一行/列的所有单元格执行DFS / BFS。根据定义,其余未访问的细胞必须属于湖泊。

答案 1 :(得分:0)

此代码以这种格式为您提供湖泊及其坐标:

{x: '', y: '', coords: {top: '', right: '', bottom: '', left: ''}}

这个坐标是1的{​​{1}}坐标{/ 1};

我只需使用此代码解决 fun 。但这是真的!



0