我有一张世界地图的黑白图片。
我将像素转换为由坐标 (i, j) 索引的二进制值网格(0 表示水,1 表示土地)。现在,假设我在陆地上随机选择一个点,这次是在美国德克萨斯州的某个地方。我想知道我可以到达的所有点的 (i, j) 坐标,无需穿过水域。在这种情况下,它将是整个北美和南美(减去任何周围岛屿)中的任何 (i, j)。
(这背后的动机是我试图在 c 中并行实现一个 SIR 感染模型。)
非常感谢您的帮助。
编辑: 如果有任何近似方法我也很感兴趣(如果错误地包括了一些微小的近海岛屿,我并不过分大惊小怪。),也许是像四叉树这样的网格划分方法?再次感谢。
最佳答案
您正在寻找 flood fill algorithm .它可以递归地完成,或手动维护堆栈,或使用队列。
关于找到一个城市所连接的最大陆地的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14043210/