#include<bits/stdc++.h>
using namespace std;
int n,m;//行列
char mp[70][70];//地图
int next[4][2]={{-1,0},{1,0},{0,-1},{0,1}};//方向
int ans=0;//答案
void dfs(int x,int y){
for(int i=0;i<4;i++){
int nx=x+next[i][0];
int ny=y+next[i][1];
if(nx>=0 && nx<n && ny>=0 && ny<m && mp[nx][ny]!=‘0‘){
mp[nx][ny]=‘0‘;
dfs(nx,ny);
}
}
}
int main(){
cin>>n>>m;
getchar();//过滤换行符
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>mp[i][j];
}
getchar();//过滤换行符
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(mp[i][j]!=‘0‘){//当不为‘0’时开始遍历
ans++;
dfs(i,j);//从当前位置开始遍历
}
}
}
cout<<ans<<endl;
return 0;
}
原文:https://www.cnblogs.com/qwn34/p/13768417.html