W为湖,‘.’不是湖。W连成一个湖,要数有几个湖。
#include <iostream>
using namespace std;
int n,m;
char a[100][100];
void dfs(int x,int y){
a[x][y]='.';
for(int dx=-1;dx<=1;dx++){
for(int dy=-1;dy<=1;dy++){
int nx=x+dx,ny=y+dy;
if(nx>=0 && nx<n && ny>=0 && ny<m && a[nx][ny]=='W'){
dfs(nx,ny);
}
}
}
return;
}
int main(){
cin>>n>>m;
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i][j]=='W'){
dfs(i,j);
ans++;
}
}
}
printf("%d",ans);
return 0;
}
/*
10 12
W...W...W...
WW..WWWW....
WWWWWW......
WW..WW..WWWW
......WW....
WW..........
WWW.....WWWW
....WWW.....
WWWW....WWWW
WWWWWW......
/*
本文介绍了一个使用深度优先搜索(DFS)来计算二维网格中湖泊数量的算法。通过遍历每个格子并标记已访问过的湖泊区域,确保了湖泊计数的准确性。此算法适用于解决地图上湖泊分割的问题。
249

被折叠的 条评论
为什么被折叠?



