使用Python中的Floodfill操作填充颜色的程序

假设我们有一个2D网格,其中包含颜色,如字符串“ r”,“ g”和“ b”。我们必须使用颜色目标在r行c列执行洪水填充操作。众所周知,Floodfill操作应该替换所有都连接到grid [r,c](上/右/下/左)且颜色与grid [r,c]相同且与目标相同的元素。

所以,如果输入像

[R[R[R
[RG
G

那么输出将是

GGG
GG
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

回到顶部