我正在尝试实施洪水填充算法,以便为我的机器人在网格中找到所有可用的单元。 (0表示可用,1表示已占用)。 我的输入是一个网格(矩阵),该网格不必平方,并且可以从x和y坐标开始泛洪填充算法。 我的问题是: 我正在尝试初始化一个仅收集可到达单元格的集合, 但是由于某种原因我得到了这个错误: 我只将(0,0)单元格放入可访问的集合中。
还有一件事,我想在填满时丢失2的标记,但是我能做到吗?还是会伤害我的算法?
这是我的代码: (如果我删除所有带有“ reachable”的行,它将起作用,但这不是我想要的。)
def floodfill(matrix, x, y):
reachable = set()
if matrix[x][y] == 0:
matrix[x][y] = 2
reachable.add((x, y))
if x > 0:
floodfill(matrix,x-1,y)
if x < len(matrix) - 1:
floodfill(matrix,x+1,y)
if y > 0:
floodfill(matrix,x,y-1)
if y < len(matrix[0]) - 1:
floodfill(matrix,x,y+1)
return reachable