使用 Python 中的填充操作填充颜色的程序
pythonserver side programmingprogramming更新于 2026/2/2 7:40:17
假设我们有一个 2D 网格,其中包含字符串"r"、"g"和"b"的颜色。我们必须使用颜色目标在行 r、列 c 处执行填充操作。我们知道,Floodfill 操作应该用与 target 相同的颜色替换所有与 grid[r,c] 相连(上/右/下/左)且与 grid[r,c] 具有相同颜色的元素。
因此,如果输入如下
| R | R | R |
| R | G | B |
| G | B | B |
则输出将是
| G | G | G |
| G | G | B |
| G | B | B |
因为连接到 grid[0,0] 的红色单元格被绿色 ("g") 替换。
为了解决这个问题,我们将遵循以下步骤 −
- 定义一个新的集合 see
- oldcolor := matrix[r, c]
- 定义一个函数 dfs() 。这将需要 i, j
- 如果 i 和 j 在矩阵中,且 (i, j) 未见,且 matrix[i, j] 与 oldcolor 相同,则
- add(i, j) of seen
- matrix[i, j] := target
- 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 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

