def dfs(r, c):
# 超出邊界或是水域就返回
if r < 0 or r >= rows or c < 0 or c >= cols or grid[r][c] == '0':
return
# 標記為已訪問
grid[r][c] = '0'
# 探索四個方向
dfs(r+1, c) # 下
dfs(r-1, c) # 上
dfs(r, c+1) # 右
dfs(r, c-1) # 左
# 案例 : 三個島嶼
grid = [
["1","1","0","0","0"],
["1","1","0","0","0"],
["0","0","1","0","0"],
["0","0","0","1","1"]
]
# 顯示原始網格
for row in grid:
print(''.join(row))
islands = 0
rows, cols = len(grid), len(grid[0])
# 遍歷網格-找到一個1就會利用dfs(r,c)把相鄰的1改為0,即標示為已訪問
for r in range(rows):
for c in range(cols):
if grid[r][c] == '1':
islands += 1
dfs(r, c)
print(f"{islands} 個島嶼")
# 顯示原始網格
for row in grid:
print(''.join(row))
Output:
11000
11000
00100
00011
3 個島嶼
00000
00000
00000
00000
沒有留言:
張貼留言