链接:http://poj.org/problem?id=2386
DFS 的入门级题目....依次递归8个方向即可:
#include <iostream>
//#include<cstdio>
using namespace std;
char data[105][105];
int n,m;
void dfs(int x,int y)
{
int dx,dy;
int nx,ny;
data[x][y]='.';
for(dx=-1; dx<=1; dx++)
for(dy=-1; dy<=1; dy++)
{
nx=x+dx;ny=y+dy;
if(nx<n&&ny<m&&data[nx][ny]=='W'&&nx>=0&&ny>=0)
dfs(nx,ny);
}
}
int main()
{
int i,j;
//freopen("1.txt","r",stdin);
int ans;
while(cin>>n>>m)
{
ans=0;
for(i=0; i<n; i++)
cin>>data[i];
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
if(data[i][j]=='W')
{
dfs(i,j);
ans++;
}
}
cout<<ans<<endl;
}
return 0;
}