1329 【例8.2】細胞
阿新 • • 發佈:2020-10-04
#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 pr(){//測試函式
cout<<"--------------"<<endl;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cout<<mp[i][j];
}
cout <<endl;
}
}
void dfs(int x,int y){
mp[x][y]='0';
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'){
// pr();
// cout<<endl;
dfs(nx,ny);
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>mp[i][j];
}
}
// pr();
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;
}