简单搜索
需要注意的是: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)