题目来自:http://poj.org/problem?id=2386
10 12 W........WW. .WWW.....WWW ....WW...WW. .........WW. .........W.. ..W......W.. .W.W.....WW. W.W.W.....W. .W.W......W. ..W.......W.
3
OUTPUT DETAILS:
There are three ponds: one in the upper left, one in the lower left,and one along the right side.#include <iostream> #include <cstring> using namespace std; int idx[101][101],m,n,ans = 0; char a[101][101]; void dfs(int x,int y,int id){ if (x < 0 || x >= m || y < 0 || y >= n) return; if (idx[x][y] > 0 || a[x][y] == ‘.‘) return; idx[x][y] = id; dfs(x - 1,y,id); dfs(x + 1,y,id); dfs(x,y + 1,id); dfs(x,y - 1,id); if (x <= m - 1 && y <= n - 1) dfs(x + 1,y + 1,id); if (x >= 1 && y >= 1)dfs(x - 1,y - 1,id); if (x > 0 || y > 0) dfs(x + 1,y - 1,id); if (x <= m - 1 && y <= n - 1)dfs(x - 1,y + 1,id); } int main(){ memset(a,0,sizeof(a)); memset(idx,0,sizeof(idx)); cin >> m >> n; for (int i = 0;i < m;i++){ cin >> a[i]; } int cnt = 0; for (int i = 0;i < m;i++){ for (int j = 0;j < n;j++){ if (idx[i][j] == 0 && a[i][j] != ‘.‘){ dfs(i,j,++cnt); } } } cout << cnt; return 0; }
原文:https://www.cnblogs.com/linyiweiblog/p/14584267.html