- 题解
2744题解
- 2025-3-15 20:54:46 @
#include <bits/stdc++.h>
using namespace std;
int n,m,ans;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
char mp[101][101]; bool vis[101][101];
void dfs(int x,int y){
for(int i=0;i<4;i++){
int xx=x+dx[i],yy=y+dy[i];
if(xx>0&&xx<=n&&yy>0&&yy<=m&&!vis[xx][yy]&&mp[xx][yy]=='#'){
vis[xx][yy]=true;
dfs(xx,yy);
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>mp[i][j]; }
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(mp[i][j]=='#'&&vis[i][j]==false){
ans++; dfs(i,j);
}
}
}
cout<<ans; return 0;
}
把所有的山变成陆地:发现一块山,先使其变成陆地,再深搜,直至这座山被变成陆地,再让ans+1,直至每个点都变成陆地
0 条评论
目前还没有评论...