题解 | 数水坑

数水坑

https://www.nowcoder.com/practice/664ca4289fcf457ba3109fdf4a7a1a05

import sys
from collections import deque

n,m=map(int,input().split())
map_matrix=[]
for _ in range(n):
    map_matrix.append(input())
water_num=0

matrix=[['.']*(m) for _ in range(n)]
for i in range(n):
    for j in range(m):
        if map_matrix[i][j]=='W':
            matrix[i][j]='W'

def dfs(i,j):
    dfs_que=deque()
    dfs_que.append((i,j))
    while dfs_que:
        x,y=dfs_que.popleft()
        if y-1>=0 and matrix[x][y-1]=='W':
                matrix[x][y-1]=water_num
                dfs_que.append((x,y-1))
        if y+1<=m-1 and matrix[x][y+1]=='W':
                matrix[x][y+1]=water_num
                dfs_que.append((x,y+1))

        if x-1>=0:
            if matrix[x-1][y]=='W':
                matrix[x-1][y]=water_num
                dfs_que.append((x-1,y))
            if y-1>=0 and matrix[x-1][y-1]=='W':
                matrix[x-1][y-1]=water_num
                dfs_que.append((x-1,y-1))
            if y+1<=m-1 and matrix[x-1][y+1]=='W':
                matrix[x-1][y+1]=water_num
                dfs_que.append((x-1,y+1))
        if x+1<=n-1:
            if matrix[x+1][y]=='W':
                matrix[x+1][y]=water_num
                dfs_que.append((x+1,y))
            if y-1>=0 and matrix[x+1][y-1]=='W':
                matrix[x+1][y-1]=water_num
                dfs_que.append((x+1,y-1))
            if y+1<=m-1 and matrix[x+1][y+1]=='W':
                matrix[x+1][y+1]=water_num
                dfs_que.append((x+1,y+1))
        
for i in range(n):
    for j in range(m):
        if matrix[i][j]=='W':
            matrix[i][j]=water_num
            dfs(i,j)
            water_num+=1

print(water_num)
        

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务