您的位置:首页 > 其它

Late Counting (POJ 2386) 深度优先搜索

2013-08-21 16:45 375 查看
有一个大小为N×M的园子,雨后积起了水。八连通的积水被认为是连接在一起的。请求出

园子里总共有多少水洼?(八连通指的是下图中相对W 的*的部分)

***

*W*

***

限制条件

N, M ≤ 100

输入

N=10, M=12

园子如下图('W'表示积水,'.'表示没有积水)

W........WW.

.WWW.....WWW

....WW...WW.

.........WW.

.........W..

..W......W..

.W.W.....WW.

W.W.W.....W.

.W.W......W.

..W.......W.

输出

3

import java.util.Scanner;

public class ant {
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		int m = scanner.nextInt();
		int n = scanner.nextInt();
		int count = 0;
		char[][] lake = new char[m]
;
		for(int i=0;i<m;i++){
			lake[i] = scanner.next().toCharArray();
			
		}
		for(int i=0;i<m;i++){
			for(int j=0;j<n;j++){
				if(lake[i][j]=='W'){
					dfs(lake,i,j,m,n);
					count++;
					
				}
			}
		}
		
			System.out.println(count);
		
		
		
	}
	public static void dfs(char[][] lake,int i,int j,int m,int n){
		lake[i][j] = '.';
		for(int ax=-1;ax<=1;ax++){
			for(int ay=-1;ay<=1;ay++){
				int jx = i+ax;
				int jy = j+ay;
				if(jy>=0 && jy<n && jx<m&&jx>=0 && lake[jx][jy]=='W'){
					dfs(lake,jx,jy,m,n);
				}
			}
		}
		
		 
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: