题目: 有一个大小为N*M的园子, 雨后起了积水,八连通的积水被认为是连接在一起的。请求出园子里总共有多少水洼.如下列字符组成的图,可以看出有两个水洼。
使用深度优先搜索(DFS), 在某一处水洼, 从8个方向查找, 直到找到所有连通的积水. 再次指定下一个水洼, 直到没有水洼为止。
输入数据:
5 5
...WW
WWWW.
...W.
W....
WWW..
public class dfs_水洼数目 {
static int M,N;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
M = sc.nextInt();
N = sc.nextInt();
char[][] arr = new char[M][N];
for(int i=0;i<M;i++) {
arr[i] = sc.next().toCharArray();
}
int count = 0;
for(int i=0;i<M;i++) {
for(int j=0;j<N;j++) {
if(arr[i][j]=='W') {
dfs(arr,i,j);//清除一个水洼
count++;
}
}