Skip to content
الگوریتم‌های دیگر

Flood Fill — رنگ‌آمیزی موجی

روی گرید کلیک کن تا موج رنگ پخش شود

ابزار فعال:رنگ‌آمیزی

روی یک خانه کلیک کن تا Flood Fill شروع شود 🎨

می‌توانی اول دیوار بکشی، بعد رنگ‌آمیزی کنی

درباره Flood Fill

Flood Fill مثل ابزار bucket در نرم‌افزارهای نقاشی کار می‌کند. از نقطه شروع، به چهار جهت پخش می‌شود و هر خانه همرنگ یا خالی را رنگ می‌کند تا به دیوار یا لبه گرید برسد. پیاده‌سازی BFS (صف) یا DFS (پشته/بازگشتی) دارد.

زمان

O(R×C)

حافظه

O(R×C)

کاربرد

نقاشی

گرید ۲DBFS یا DFSدیوار توقف می‌دهد
flood_fill.py
from collections import deque

def flood_fill(grid, sr, sc, color):
    rows, cols = len(grid), len(grid[0])
    target = grid[sr][sc]
    if target == color: return

    queue = deque([(sr, sc)])
    grid[sr][sc] = color      # رنگ مبدأ

    dirs = [(0,1),(0,-1),(1,0),(-1,0)]

    while queue:
        r, c = queue.popleft()
        for dr, dc in dirs:
            nr, nc = r+dr, c+dc
            if 0<=nr<rows and 0<=nc<cols:
                if grid[nr][nc] == target:
                    grid[nr][nc] = color
                    queue.append((nr, nc))

    # O(R × C) — هر خانه یک‌بار بازدید می‌شود