0
点赞
收藏
分享

微信扫一扫

【寒假每日算法】—— day.2 全球变暖

Separes 2022-01-15 阅读 19
算法

学习目标:

分享寒假每日刷的算法题,冲击4月蓝桥杯!!冲冲冲


原题:全球变暖(2018省赛)

题目描述:

输入描述 :

 示例:


 题解:

思路(BFS):


 代码实现(Python):

from collections import *
n = int(input())
map = []
for i in range(n):
    map.append(list(input()))
vis = [[0 for i in range(n)]for j in range(n)]

def bfs(x,y):
    dirs = [(1,0),(0,1),(-1,0),(0,-1)]
    flag = True
    q = deque()
    q.append((x,y))
    vis[x][y] = 1
    while q:
        nx,ny = q.popleft()
        if map[nx-1][ny]=="#" and map[nx+1][ny]=="#" and map[nx][ny+1]=="#" and map[nx][ny-1]=="#":
            flag = False
        for i in range(4):
            nnx,nny = nx + dirs[i][0], ny + dirs[i][1]
            if vis[nnx][nny] == 0 and map[nnx][nny] == "#":
                q.append((nnx,nny))
                vis[nnx][nny] = 1
    return flag

ans = 0
for i in range(n):
  for j in range(n):
    if map[i][j] == "#" and vis[i][j] == 0:
      if bfs(i,j):
        ans += 1

print(ans)
举报

相关推荐

0 条评论