BFS周边

时间:2015-05-15 00:30:04

标签: c++ breadth-first-search

给定NxN网格0s,1s和2s,找出1s还是2s被包围。被包围意味着1s被2s包围或者2s被1s包围。

010 121 010

表示2个环绕一个。 有一些复杂的:

10110 21212 11111

2由1围绕,因为(2,1)由1围绕而且(0,1)不围绕1,因为(0,1)左边没有1。

如何确定哪个包含哪个以及如何解决此问题。

1 个答案:

答案 0 :(得分:0)

假设表a的大小为m * n。 你应该在表格周围添加一个边界(如下图所示) enter image description here

你可以这样做:

  • 假设您检查表的位置(i,j)是否被包围?
  • 来自(i,j)条件(a[u][v] == a[i][j] || a[u][v] == 0)的BFS - >将(u,v)添加到堆栈
  • 如果您访问边界(a[0][x]a[x][0]a[m+1][x]a[x][n+1]) - >它没有被包围