题目:1233. 全球变暖
思路:dfs,在dfs时判断周围是否都是陆地,是的话,这次dfs就不会被淹
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int >PII;
const int N=1e5+10;
const int mod=100000007;
char a[1010][1010];
bool sta[1010][1010];
int fx[4]={0,0,-1,1};
int fy[4]={1,-1,0,0};
int ans=0;
bool flag=0;
int n;
void dfs(int x,int y){
sta[x][y]=1;
int sum=0;
for(int i=0;i<4;i++){
int xx=x+fx[i];
int yy=y+fy[i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=n){
if(a[xx][yy]=='#'){
sum++;
if(!sta[xx][yy]){
dfs(xx,yy);
}
}
}
}
if(sum==4) flag=1;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(!sta[i][j]&&a[i][j]=='#'){
flag=0;
dfs(i,j);
if(!flag){
ans++;
}
}
}
}
cout<<ans;
return 0;
}