题目链接
简单dfs
import java.util.*;
import java.math.*;
public class Main {
public static int[] dx={1,-1,0,0},dy={0,0,-1,1};
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int r=sc.nextInt();
int c=sc.nextInt();
char[][] map=new char[r][c];
sc.nextLine();
for(int i=0;i<r;i++){
String s=sc.nextLine();
map[i]=s.toCharArray();
}
int res=0;
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
if(map[i][j]!='0'){
dfs(i,j,map);
res++;
}
}
}
System.out.println(res);
}
public static void dfs(int x,int y,char[][] map){
int r=map.length;
int c=map[0].length;
map[x][y]='0';
for(int i=0;i<4;i++){
int xx=x+dx[i];
int yy=y+dy[i];
if(xx<0||yy<0||xx==r||yy==c||map[xx][yy]=='0')
continue;
map[xx][yy]='0';
dfs(xx,yy,map);
}
}
}