大佬求解!!90分 #2 RE 糊了
查看原帖
大佬求解!!90分 #2 RE 糊了
901233
mark_楼主2024/1/25 23:11
n,m = map(int,input().split())
lst = [input() for _ in range(n)]
kk = []
#将原列表转换为值为0or1的二维列表
for s in lst:
    temp = []
    for c in s:
        if c == '.':
            temp.append(0)
        else:
            temp.append(1)
    kk.append(temp)

#将有水的位置赋值为0 即无水
def fun(i,j):
    global kk,n,m
    if kk[i][j] == 0:
        return
    kk[i][j] = 0
    #(i,j) 周围8个
    if i-1>=0: #上
        fun(i-1,j)
        if j-1>=0: #上左
            fun(i-1,j-1)
        if j+1<m: #上右
            fun(i-1,j+1)
    if j-1>=0: #左
        fun(i,j-1)
    if j+1<m: #右
        fun(i,j+1)
    if i+1<n: #下
        fun(i+1,j)
        if j-1>=0: #下左
            fun(i+1,j-1)
        if j+1<m: #下右
            fun(i+1,j+1)
            
count = 0

#每清除一次加一
for i in range(n):
    for j in range(m):
        if kk[i][j] == 1:
            count += 1
            fun(i,j)
    
print(count)
2024/1/25 23:11
加载中...