1.2 水洼dfs
poj:
http://poj.org/problem?id=2386
#include<iostream>
using namespace std;
#define maxn 105
int n,m;
char field[maxn][maxn];
void dfs(int x,int y)
{
field[x][y]='.';//注意要改成.
for(int i=-1;i<=1;i++){//八连通,八个方向都要dfs
for(int j=-1;j<=1;j++){
if(x+i>=0&&x+i<n&&y+j>=0&&y+j<m&&field[x+i][y+j]=='W'){
dfs(x+i,y+j);
}
}
}
}
void solve()
{
int c=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(field[i][j]=='W')
{
dfs(i,j);//dfs几次就代表有几个水洼
c++;//cout<<c<<'\n';
}
}
}
cout<<c;
}
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>field[i][j];
}
}
solve();
return 0;
}