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