n*m的矩阵
W是水 .是地
问有多少池塘
池塘的定义是:
W通过 八个 方向连接成的一片算作是一个池塘
样例输入中,有左上、左下、右侧三片连接在一起的W
因而样例输出给出了3个池塘的答案
#include <cstdio> #include <iostream> #define N 110 using namespace std; int n,m; char s[N][N]; void dfs(int x,int y) { s[x][y]='.'; int i,j; for(i=-1; i<=1; i++) for(j=-1; j<=1; j++) { int nx=x+i,ny=y+j; if(nx<0||nx>=n||ny<0||ny>=m||s[nx][ny]=='.') continue; dfs(nx,ny); } } int main() { scanf("%d%d%*c",&n,&m); int ans=0,j,i; for(i=0; i<n; i++) cin>>s[i]; for(i=0; i<n; i++) for(j=0; j<m; j++) if(s[i][j]=='W') { dfs(i,j); ans++; } cout<<ans<<endl; return 0; }