原题链接:<a target=_blank href="http://poj.org/problem?id=2386">http://poj.org/problem?id=2386</a>
#include <iostream>
using namespace std;
int dx[] = {0,1,1,1,0,-1,-1,-1}, dy[] = {1,1,0,-1,-1,-1,0,1};
char map[101][101];
int r,c;
void dfs(int x,int y)
{
map[x][y] = '.';
int i,nx,ny;
for(i = 0;i < 8;i++)
{
nx = x + dx[i];//注意:不是x+=dx[i]
ny = y + dy[i];
if(nx <= r && ny <= c && map[nx][ny] == 'W' && nx >= 1 && ny >= 1)
{
dfs(nx,ny);
}
}
return;
}
int main(int argc, char *argv[])
{
cin >> r >> c;
int i,j,cnt = 0;
for(i = 1;i <= r;i++)
for(j = 1;j <= c;j++)
cin >> map[i][j];
for(i = 1;i <= r;i++)
for(j = 1;j <= c;j++)
{
if(map[i][j] == 'W')
{
dfs(i,j);
cnt++;
}
}
cout << cnt << endl;
return 0;
}