【发布时间】:2013-06-18 07:18:01
【问题描述】:
我知道标题似乎有点模棱两可,因此我附上了一张有助于清楚理解问题的图片。我需要在白色区域内找到洞。一个洞被定义为白色区域内的一个或多个值为“0”的单元格我的意思是它必须被值为“1”的单元格完全包围(例如,在这里我们可以看到三个标记为 1、2 和 3 的洞)。我想出了一个非常幼稚的解决方案: 1. 在整个矩阵中搜索值为“0”的单元格 2. 当遇到这样的单元格(黑色单元格)时运行 DFS(Flood-Fill)并检查我们是否可以触及主矩形区域的边界 3.如果在DFS过程中可以触及边界则不是洞,如果我们不能到达边界则视为洞
现在,这个解决方案有效,但我想知道是否有任何其他有效/快速的解决方案来解决这个问题。
请告诉我你的想法。谢谢。
【问题讨论】:
-
您希望如何返回有关孔的信息?您想要孔中的细胞列表吗?你想让他们按他们所在的洞分组吗?还是您只需要知道是否有孔,或者有多少孔?或者,每个孔可能需要一个代表单元。或者您只是希望能够指定一个单元格坐标并询问该单元格是否在一个洞中?或者您可能想要另一个 2D 矩阵作为输出,其中每个单元格都被标记为“空洞”或“非空洞”。
-
输出应该是: 1. 如果有任何孔 2. 细胞在孔中也应该被标记,以便我可以理解这个细胞在孔中。我的意思是我可以随意修改输入缓冲区来标记漏洞。
标签: algorithm search flood-fill