JAVA孔网格(JAVA Hole in Grid)

2019-10-17 16:32发布

我需要找到在Java中的2D网格“洞” - 你可以点我朝着算法的最佳排序来做到这一点?

随着以下几点输入:

5,3
5,4
8,4
5,5
6,3
7,3
7,4
6,5

我需要找出在这个网格中的“洞”或包围空间的位置。 我有点失去了对如何做到这一点。

点的情节:

假设每个点是1x1的

Answer 1:

这基本上是一个斑块提取算法+有点多余。 做这个:

1)找到的最西,最东,北端和最南端任何固体置于。 记住他们为XMIN XMAX YMIN YMAX。

2)分配)与这些尺寸整数的2D阵列(初始化为0,并将所有固体个它作为值-1。

3)使初始化为1扫描该二维阵列的计数器。 每当你找到一个点为0时,将其设置为counter和floodfill counter小号到每个相邻点不是-1,直到你已经用完了点floodfill到的。 (做一个floodfill,一种方式是将一组您还没有floodfilled的又所有邻居的所有点,并遍历这些,增加新的点集合,直到集合耗尽 - >一无所有floodfill到。)现在增加计数器和继续。

4)当你扫描了整个网格,扫描周边。 你每次都能看到一个非-1的周长,标记该斑点为未被包围(由只要具有的bool数组作为你发现的斑点数)。

5)你有没有标明每个编号斑被包围。

阅读关于斑块提取这里: http://en.wikipedia.org/wiki/Blob_extraction



文章来源: JAVA Hole in Grid
标签: java grid