版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hepburn_Sunsir/article/details/89076482
http://poj.org/problem?id=2386 POJ 2386 dfs
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<stack>
#include<queue>
using namespace std;
int cnt;
char mass[1001][1001];//一直AC不了,范围设的有点小。
int n,m,to[8][2]={-1,1, 0,1, 1,1 ,1,0 ,1,-1 ,0,-1, -1,-1, -1,0};
void dfs(int x, int y){
for(int i=0; i<8; i++)
{
if(x+to[i][0]<n&&x+to[i][0]>=0&&
y+to[i][1]<m&&y+to[i][1]>=0&&
mass[x+to[i][0]][y+to[i][1]]=='W')
{
mass[x+to[i][0]][y+to[i][1]]='.';
dfs(x+to[i][0], y+to[i][1]);
}
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=0; i<n; i++)
scanf("%s",&mass[i]);
cnt = 0;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++)
{
if(mass[i][j]=='W'){cnt++;dfs(i,j);}
}
}
printf("%d\n",cnt);
return 0;
}