Arrays 将二维阵列分割为以连续线为边界的区域

Arrays 将二维阵列分割为以连续线为边界的区域,arrays,algorithm,sorting,Arrays,Algorithm,Sorting,在我大学的第一年,我是一个初学者爱好者程序员。最近,我一直痴迷于益智游戏“证人”,因为它是一款极简但难度惊人的益智游戏。作为一个激情项目,我试图重新创造游戏中的益智元素,让其他人享受 游戏 基本上,您有一个由用户控制的白色路径,您必须在网格中导航该路径,将网格拆分为由黑白瓷砖组成的区域。每个区域必须只有白色或黑色瓷砖。 我已经发布了一张到目前为止该项目的图片,其中有一个已解决的难题 问题 在我的一生中,我无法想出一个函数来将网格分割为如图所示的区域。路径是路径中每个点的x和y坐标的一维数组。完

在我大学的第一年,我是一个初学者爱好者程序员。最近,我一直痴迷于益智游戏“证人”,因为它是一款极简但难度惊人的益智游戏。作为一个激情项目,我试图重新创造游戏中的益智元素,让其他人享受

游戏

基本上,您有一个由用户控制的白色路径,您必须在网格中导航该路径,将网格拆分为由黑白瓷砖组成的区域。每个区域必须只有白色或黑色瓷砖。 我已经发布了一张到目前为止该项目的图片,其中有一个已解决的难题

问题

在我的一生中,我无法想出一个函数来将网格分割为如图所示的区域。路径是路径中每个点的x和y坐标的一维数组。完成后,它应该位于网格的右上角(cols,rows)。这是假设左下角为(0,0)

每个拼图都有n行和n列,所以我喜欢一个函数getRegions(path,cols,rows),它接受路径、行和列,并输出如下数组

arrayWithRegions=
[[2,3,3,2],
 [2,2,2,2],
 [1,1,1,2],
 [1,1,1,2]]
根据路径和外部边界设置的边界,将每个正方形标记为位于不同区域中。示例是数组如何在提供的图像中查找谜题。(忽略黑白块,它们现在不重要)

我将感谢任何形式的帮助,甚至是朝着正确的方向轻推。谢谢

只需使用路径线和字段边作为边界即可执行

选择任何未标记的单元(例如-左下角的单元),使用区域标记1开始整体填充,遍历所有可能的单元。然后找到另一个未标记的单元格,开始填充区域标记2,依此类推


FF algo最简单的递归实现和未标记单元格的顺序搜索应该可以很好地用于较小的字段大小。

Dude你就是那个人。你救了我的命,你对如何实现它的解释非常直观。我也很喜欢这个算法,我以前从未听说过它,但它似乎对边界检测非常有用。一旦我实现了代码,我将跟进它。非常感谢你的帮助。
arrayWithRegions=
[[2,3,3,2],
 [2,2,2,2],
 [1,1,1,2],
 [1,1,1,2]]