DFS入门
#include<iostream>
#include<fstream>
#define N 105
char map[N][N];
int isvisted[N][N];
int m,n;
int num;
int dir[][2]={{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1}};
int DFS(int x,int y)
{
if(x<0||x>=m||y<0||y>=n){
return 0;
}
if(map[x][y]=='*'){
return 0;
}
if(isvisted[x][y]==1){
return 0;
}
isvisted[x][y]=1;
int t_x,t_y;
for(int i=0;i!=9;i++){
t_x=x+dir[i][0];
t_y=y+dir[i][1];
DFS(t_x,t_y);
}
return 1;
}
int main()
{
//std::fstream fin("1.txt");
while (std::cin>>m>>n&&m){
for(int i=0;i!=m;i++){
for(int j=0;j!=n;j++){
std::cin>>map[i][j];
}
}
for(int i=0;i!=m;i++){
for(int j=0;j!=n;j++){
if(map[i][j]=='@'&&isvisted[i][j]==0){
DFS(i,j);
num++;
}
}
}
std::cout<<num<<std::endl;
num=0;
memset(map,0,sizeof(map));
memset(isvisted,0,sizeof(isvisted));
}
}