转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents
题目链接:http://poj.org/problem?id=1562
----------------------------------------------------------------------------------------------------------------------------------------------------------
欢迎光临天资小屋:http://user.qzone.qq.com/593830943/main
----------------------------------------------------------------------------------------------------------------------------------------------------------
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
代码如下:
#include <iostream> #include <algorithm> using namespace std; #include <cstring> #define TM 100+17 int N, M; char map[TM][TM]; bool vis[TM][TM]; int xx[8]={0,1,1,1,0,-1,-1,-1}; int yy[8]={1,1,0,-1,-1,-1,0,1}; void DFS(int x, int y) { vis[x][y] = true; for(int i = 0; i < 8; i++) { int dx = x+xx[i]; int dy = y+yy[i]; if(dx>=0&&dx<N&&dy>=0&&dy<M&&!vis[dx][dy]&&map[dx][dy] == 'W') { vis[dx][dy] = true; DFS(dx,dy); } } } int main() { int i, j; while(cin>>N>>M) { int count = 0; memset(vis,false,sizeof(vis)); for(i = 0; i< N; i++) { cin>>map[i]; } for(i = 0; i < N; i++) { for(j = 0; j < M; j++) { if(map[i][j] == 'W' && !vis[i][j]) { count++; DFS(i,j); } } } cout<<count<<endl; } return 0; }
poj2386 Lake Counting(简单DFS),布布扣,bubuko.com
原文地址:http://blog.csdn.net/u012860063/article/details/37811487