lake counting python解法
时间: 2024-05-07 16:14:22 浏览: 116
Lake counting问题是指给定一个二维矩阵,其中字符‘W’代表水,字符‘.’代表陆地,求出矩阵中连通的水的区域个数。下面是Python解法的示例代码:
```python
def dfs(grid, i, j):
if i < 0 or j < 0 or i >= len(grid) or j >= len(grid) or grid[i][j] != 'W':
return
grid[i][j] = '.'
dfs(grid, i-1, j)
dfs(grid, i+1, j)
dfs(grid, i, j-1)
dfs(grid, i, j+1)
def lake_counting(grid):
count = 0
for i in range(len(grid)):
for j in range(len(grid)):
if grid[i][j] == 'W':
dfs(grid, i, j)
count += 1
return count
```
该解法使用了深度优先搜索(DFS)来遍历连通的水域,并将其标记为陆地。具体而言,从每个‘W’字符开始,遍历其相邻的四个字符,如果相邻字符是‘W’,则递归遍历相邻字符;否则不进行递归遍历,直接返回。在递归遍历过程中,将遍历过的字符标记为陆地(即‘.’字符),以避免重复计算。最后统计标记完毕后的‘W’字符个数即为连通的水域个数。
阅读全文