从左上角洪泛,改了几格
从 (0,0) 出发,把连着的 1 全改成 2。运行下面这段程序:
def flood(g, si, sj, new):
m = len(g)
n = len(g[0])
old = g[si][sj]
if old == new:
return 0
st = [(si, sj)]
g[si][sj] = new
k = 1
while st:
x, y = st.pop()
for dx, dy in ((1, 0), (-1, 0), (0, 1), (0, -1)):
a, b = x + dx, y + dy
if 0 <= a < m and 0 <= b < n and g[a][b] == old:
g[a][b] = new
st.append((a, b))
k += 1
return k
g = [[1, 1, 0, 0], [1, 0, 0, 1], [0, 0, 1, 0], [1, 0, 0, 0]]
print(flood(g, 0, 0, 2))
全部评论