ابزار فعال:رنگآمیزی
روی یک خانه کلیک کن تا Flood Fill شروع شود 🎨
میتوانی اول دیوار بکشی، بعد رنگآمیزی کنی
درباره Flood Fill
Flood Fill مثل ابزار bucket در نرمافزارهای نقاشی کار میکند. از نقطه شروع، به چهار جهت پخش میشود و هر خانه همرنگ یا خالی را رنگ میکند تا به دیوار یا لبه گرید برسد. پیادهسازی BFS (صف) یا DFS (پشته/بازگشتی) دارد.
زمان
O(R×C)
حافظه
O(R×C)
کاربرد
نقاشی
✓ گرید ۲D✓ BFS یا 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) — هر خانه یکبار بازدید میشود