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
园子里总共有多少水洼?(八连通指的是下图中相对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); } } } } }
相关文章推荐
- 深度优先搜索 poj 2386
- POJ-2386-Lake Counting(深度优先搜索初步!)
- POJ1321,深度优先搜索
- poj1312 dfs 深度优先搜索
- 深度优先搜索【POJ 1979】
- POJ 1979 - Red and Black 深度优先搜索
- POJ 2386 深度搜索
- 2.1.4 Lake Counting (POJ 2386) 深度搜索
- POJ1426-Find The Multiple-深度优先搜索BFS
- POJ-2488 A Knights Journey-深度优先搜索DFS
- 挑战第二章习题 POJ 1974 深度优先搜索
- poj3009之深度优先搜索 dfs解法
- POJ 1008 深度优先、记忆搜索
- ACM-POJ 1562 DFS 深度优先搜索
- 深度优先搜索dfs(poj 1655)
- 20124330102 【 搜索 -- 深度优先搜索 】 POJ 3414 Pots
- POJ-1979 深度优先搜索DFS
- POJ-3009 深度优先搜索
- poj1088 滑雪 dp记忆化搜索 dfs深度优先搜索
- Hopscotch(poj 3050)深度优先搜索