标签:out 顶点 row 搜索 dfs space with pre int
Description
Input
Output
Sample Input
10 12 W........WW. .WWW.....WWW ....WW...WW. .........WW. .........W.. ..W......W.. .W.W.....WW. W.W.W.....W. .W.W......W. ..W.......W.
Sample Output
3
分析:
深度优先搜索:
尽可能“深“的遍历一个图,在深度优先搜索中,对于最新已经发现的顶点,如果它的邻接顶点未被访问,则深度优先搜索该邻接顶点。
该题即利用深度优先搜索一个水洼即一次深度优先搜索,将搜索到的"W"变成".",遍历数组,能进行几次深度优先搜索就有几个水洼。
代码如下:
#include <iostream> #include <stdio.h> #define MAX_N 100 #define MAX_M 100 using namespace std; int N,M; char field[MAX_N][MAX_M+1]; void solve(); int main() { while(scanf("%d%d",&N,&M)!=EOF){ for(int i=0;i<N;i++){ scanf("%s",field[i]); } solve(); } return 0; } void dfs(int x,int y){ field[x][y]=‘.‘; for(int dx=-1;dx<=1;dx++){ for(int dy=-1;dy<=1;dy++){ int nx=x+dx,ny=y+dy; if(nx>=0&&nx<N&&ny>=0&&ny<M&&field[nx][ny]==‘W‘){ dfs(nx,ny); } } } return; } void solve() { int res=0; for(int i=0;i<N;i++){ for(int j=0;j<M;j++){ if(field[i][j]==‘W‘){ dfs(i,j); res++; } } } printf("%d\n",res); }
标签:out 顶点 row 搜索 dfs space with pre int
原文地址:http://www.cnblogs.com/LuRenJiang/p/6916514.html