#include<bits/stdc++.h>
using namespace std;
int n,m; //行列大小
char field[100][100]; //邻接矩阵存地图
void dfs(int x,int y){ //搜到x,y坐标点
field[x][y]='.'; //把搜到的这一格变为陆地(本来是w水)
for(int dx=-1;dx<=1;dx++){ //八方向X偏移
for(int dy=-1;dy<=1;dy++){ //八方向Y偏移
int nx=x+dx,ny=y+dy; //得到偏移坐标
if(0<=nx&&nx<n&&0<=ny&&ny<m&&field[nx][ny]=='w')//此坐标也是水
dfs(nx,ny); //深搜
}
}
return ;
}
void solve(){
int res=0; //答案初始化为0
for(int i=0;i<n;i++){ //行遍历
for(int j=0;j<m;j++){ //列遍历
if(field[i][j]=='w'){ //如果是水
dfs(i,j); //深搜
res++; //答案累加
}
}
}
cout<<res<<endl; //输出答案
}
int main(){
cin>>n>>m; //NXM地图
for(int i=0;i<n;i++) //行遍历
for(int j=0;j<m;j++) //列遍历
cin>>field[i][j]; //该格字符
solve(); //求解
return 0;
}
/*
深搜DFS模板题
POJ2386有一NXM的园子,w表示有积水,问有多少个水洼,水洼是八连通的
输入
10 12
.....wwwww
.....wwwww
.....wwwww
.....wwwww
wwww......
wwwww.....
wwww......
wwwww.....
........ww
........ww
........ww
........ww
输出
3
*/
4图-4深搜
最新推荐文章于 2023-03-02 19:51:00 发布