使用Python中的Floodfill操作填充颜色的程序
假设我们有一个2D网格,其中包含颜色,如字符串“ r”,“ g”和“ b”。我们必须使用颜色目标在r行c列执行洪水填充操作。众所周知,Floodfill操作应该替换所有都连接到grid [r,c](上/右/下/左)且颜色与grid [r,c]相同且与目标相同的元素。
所以,如果输入像
[R | [R | [R |
[R | G | 乙 |
G | 乙 | 乙 |
那么输出将是
G | G | G |
G | G | 乙 |
G | 乙 | 乙 |
因为连接到grid [0,0]的红色单元格被替换为绿色(“ g”)。
为了解决这个问题,我们将遵循以下步骤-
定义一个新的集合
oldcolor:=矩阵[r,c]
定义一个功能
dfs()
。这需要我,j如果i和j在矩阵中,并且(i,j)看不到并且matrix [i,j]与oldcolor相同,则
相加(i,j)
矩阵[i,j]:=目标
dfs(i + 1,j)
dfs(i,j + 1)
dfs(i,j-1)
dfs(i-1,j
从主要方法中,执行以下操作-
dfs(r,c)
返回矩阵
让我们看下面的实现以更好地理解-
示例
class Solution:def solve(self, matrix, r, c, target):
def dfs(i, j):
if (
i >= 0
and i < len(matrix)
and j >= 0
and j < len(matrix[0])
and (i, j) not in seen
and matrix[i][j] == oldcolor
):
seen.add((i, j))
matrix[i][j] = target
dfs(i + 1, j)
dfs(i, j + 1)
dfs(i, j - 1)
dfs(i - 1, j)
seen = set() oldcolor = matrix[r][c]
dfs(r, c)
return matrix
ob = Solution()matrix = [ ["r", "r", "r"], ["r", "g", "b"], ["g", "b", "b"] ]
r = 0
c = 0
target = "g"
print(ob.solve(matrix, r, c, target))
输入项
matrix = [["r", "r", "r"],
["r", "g", "b"],
["g", "b", "b"] ]
r = 0
c = 0
target = "g"
输出结果
[ ['g', 'g', 'g'], ['g', 'g', 'b'], ['g', 'b', 'b']]
以上是 使用Python中的Floodfill操作填充颜色的程序 的全部内容, 来源链接: utcz.com/z/317012.html