AcWing 1233. 全球变暖
原题链接
简单
作者:
suchong
,
2024-04-07 09:41:00
,
所有人可见
,
阅读 1
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 1010;
char g[N][N];
int dis[N][N];
int n,flag;
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
void dfs(int x, int y)
{
dis[x][y]=1;
if(g[x+1][y]=='#'&&g[x-1][y]=='#'&&g[x][y+1]=='#'&&g[x][y-1]=='#') flag=1; //如果其中有一块小地的周围都是陆地那么将这一整块陆地标记为1
for(int i=0; i<4; i++)
{
int nx = x + dx[i], ny = y + dy[i];
if(g[nx][ny]=='#'&&dis[nx][ny]==0) dfs(nx,ny); // 不管能不能淹没到 都将它标记 为的是找出一整块陆地
}
}
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
cin>>g[i][j];
int cnt=0;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
if(g[i][j]=='#' && dis[i][j]==0)
{
flag=0;
dfs(i,j);
if(flag==0)
cnt++;
}
}
}
cout << cnt << endl;
return 0;
}