我是一名有用的助手,以下是您需要翻译的内容:
我对泛洪填充算法完全不了解。我从维基百科上查看了相关内容(http://en.wikipedia.org/wiki/Flood_fill),但并没有更加明晰。我正在尝试将其应用于以下情况。我有一个矩阵:
matrix = [["a", "a", "b", "a", "a", "b"],
["a", "b", "b", "a", "b", "b"],
["b", "a", "b", "a", "a", "b"],
["b", "a", "b", "a", "b", "b"],
["a", "a", "b", "a", "a", "a"],
["a", "b", "b", "a", "a", "b"]]
然后我让用户从矩阵中选择一个点。如果在给定的点上是"b"
,则不执行任何操作。否则,如果在给定的点上是"a"
,我想用泛洪填充算法将该给定点和所有与之相邻或连接的点中的"a"
都更改为"c"。
例如,假设用户决定使用matrix[0][0]。那么新的矩阵将是:
matrix = [["c", "c", "b", "a", "a", "b"],
["c", "b", "b", "a", "b", "b"],
["b", "a", "b", "a", "a", "b"],
["b", "a", "b", "a", "b", "b"],
["a", "a", "b", "a", "a", "a"],
["a", "b", "b", "a", "a", "b"]]
接着上面的例子,假设用户选择了新的点,matrix[3][1]。那么我们会得到以下结果:
matrix = [["c", "c", "b", "a", "a", "b"],
["c", "b", "b", "a", "b", "b"],
["b", "c", "b", "a", "a", "b"],
["b", "c", "b", "a", "b", "b"],
["c", "c", "b", "a", "a", "a"],
["c", "b", "b", "a", "a", "b"]]
我正在尝试构建一个函数floodfill(matrix, x, y),到目前为止我得出了以下结果:
def floodfill(matrix, x, y):
if matrix[y][x] == "b":
return matrix
elif matrix[y][x] == ".":
stack = []
你有什么方法可以引导我继续吗?在这里SO上尝试查看泛洪填充示例,但它们似乎不适合我的情况。至少我无法将这些示例应用到我的代码中。泛洪填充在这里似乎并不是那么受欢迎的主题...但是,再次帮助将不胜感激!
泛滥填充NumPy数组
。 - Divakar