code:
#include<bits/stdc++.h>
using namespace std;
bool a[101][101]; //又是状态数组也是数据数组
int ans=0,n,m;//n和m和ans
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};//方向数组
void dfs(int x,int y){
for(int i=0;i<4;i++){//有四个方向
int nx=x+dx[i];
int ny=y+dy[i];//存储
if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&a[nx][ny]==0){
a[nx][ny]=1;//改变状态
//没有目标
dfs(nx,ny);//继续递归
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
char k;
cin>>k;
if(k=='0')a[i][j]=1;
else a[i][j]=0;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]==0){
ans++;//ans+1
dfs[i][j];//开始改变细胞的状态
}
}
}
cout<<ans;
return 0;
}
不知道为什么样例都过不来哦