简单搜索

图片说明

需要注意的是:Python中的str是不可变类型,所以不能把每行存储为一个str,而是每个字符存储为一个str,然后构成mp[m][n]大小的数组。

m,n=map(int,input().split(' '))
mp=[[None for j in range(0,n)] for i in range(0,m)]
for i in range(0,m):
    tmp=input()
    for j in range(0,n):
        mp[i][j]=tmp[j]
dests=[(0,1),(0,-1),(-1,0),(1,0),(-1,-1),(-1,1),(1,1),(1,-1)]
ans=0
for i in range(0,m):
    for j in range(0,n):
        if mp[i][j]=='#':
            mp[i][j]='.'
            ans+=1
            queue=[(i,j)]
            while queue:
                old=queue.pop(0)
                for dest in dests:
                    newi,newj=old[0]+dest[0],old[1]+dest[1]
                    if newi>=0 and newi<m and newj>=0 and newj<n and mp[newi][newj]=='#':
                        mp[newi][newj]='.'
                        queue.append((newi,newj))
print(ans)