#include<bits/stdc++.h>
using namespace std;
int n,m;
char Map[105][105];
int check(int p,int q)
{
if(p<0 || p>=n || q<0 || q>=m)
return 0;
if(Map[p][q]=='@')
return 1;
return 0;
}
void dfs(int x,int y)
{
Map[x][y]='*';
for(int dx=-1;dx<=1;dx++){
for(int dy=-1;dy<=1;dy++){
int nx=x+dx,ny=y+dy;
if(check(nx,ny)){
dfs(nx,ny);
}
}
}
}
int main()
{
while(scanf("%d %d",&n,&m),n){
getchar();int sum=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>Map[i][j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(Map[i][j]=='@'){
dfs(i,j);
sum++;
}
}
}
printf("%d\n",sum);
}
return 0;
}
总结
1.可能是我大脑太疲惫了,所以注意不到细节问题