水洼数 DFS 蓝桥杯 java代码
有一个大小为N * M的院子,雨后积起了水,八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼
限制条件
N, M <=100
10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........W..
.........W..
..W.......W.
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.
java代码
package Dfs;
import java.util.Scanner;
public class 水洼数 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
int n=input.nextInt();
int m=input.nextInt();
char[][]arr=new char[n][m];
String s;
for(int i=0;i<n;i++) {
s=input.next();
arr[i]=s.toCharArray();
}
int an=0;
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
if(arr[i][j]=='W') {
dfs(i,j,arr);
an++;
}
}
}
System.out.println(an);
}
static void dfs(int x,int y,char[][]arr) {
arr[x][y]='.';
for(int i=-1;i<2;i++) {
for(int j=-1;j<2;j++ ) {
if(x+i<0||x+i>arr.length-1||y+j<0||y+j>arr[0].length-1) {
continue;
}
if(arr[x+i][y+j]=='W') {
dfs(x+i,y+j,arr);
}
}
}
}
}