充水以获得可用的细胞

时间:2018-12-21 23:20:58

标签: python-2.7 flood-fill

我正在尝试实施洪水填充算法,以便为我的机器人在网格中找到所有可用的单元。 (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

0 个答案:

没有答案