题解,准保姆版,深搜
2024-07-27 17:17:37
发布于:北京
120阅读
0回复
0点赞
//大体思路:开始遍历检测,如果是数字那么就把与其相连的数都变成0并把计数器+1,直到整个数组都变成0.
#include<iostream>
using namespace std;
int n,m,sum,a[1001][1001];
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; //定义方向数组.
void dfs(int x,int y){
a[x][y]=0;
for(int i=0;i<4;i++){
int tx=x+dir[i][0];
int ty=y+dir[i][1];
if(tx<0||tx>=n||ty<0||ty>=m||a[tx][ty]==0) continue;
dfs(tx,ty);
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
char c;
cin>>c;
a[i][j]=c-'0'; //中间没有空格所有先以char形式输入再转为int.
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i][j]!=0){
dfs(i,j);
sum++;
}
}
}
cout<<sum;
return 0;
}
这里空空如也
有帮助,赞一个