#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
char map[101][101];
int flag;
void dfs(int i,int j)
{
if(map[i][j]=='*')return;
map[i][j] = '*';
//下面遍历8个方向
dfs(i-1,j-1);dfs(i-1,j);dfs(i-1,j+1);
dfs(i,j-1); dfs(i,j+1);
dfs(i+1,j-1);dfs(i+1,j);dfs(i+1,j+1);
flag = 1;
return;
}
int main()
{
int n, m, i,j,cnt=0;
while(cin>>n>>m,n,m){
cnt = 0;
for(i=1;i<=n;i++)
scanf("%s",map[i]+1);
for(i=0;i<=m;i++){
map[i][0] = map[0][i] = '*';//将边缘的设置为null
}
for(i=1;i<=n;i++)//开始深度优先搜索
for(j=1;j<=m;j++)
{
if(map[i][j]=='@'){
dfs(i,j);
if(flag)cnt++;
}
}
cout<<cnt<<endl;
}
return 0;
}
心情不错,一次ac,貌似搜索算法已经开始入门了!