#include<bits/stdc++.h>
using namespace std;
const int maxn=105;
const int dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};
int g[maxn][maxn],vis[maxn][maxn],n,m,cnt;
void dfs(int x,int y){
g[x][y]=0;
for(int i=0;i<4;i++){
int xx=x+dx[i],yy=y+dy[i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&g[xx][yy]!=0&&!vis[xx][yy]){
vis[xx][yy]=1;
dfs(xx,yy);
vis[xx][yy]=0;
}
}
}
int main(){
scanf("%d%d",&n,&m);
char ch;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
scanf("%c",&ch);
if(ch!='\n');
g[i][j]=(ch=='0'?0:1);
}
int cnt=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(g[i][j]&&!vis[i][j]){
vis[i][j]=1;
dfs(i,j);
cnt++;
}
printf("%d",cnt);
return 0;
}
数据情况:#2、#5、#9AC,别的全WA
算法:一眼就能看出来是dfs