dfs的入门题,水~。。。(注意判断条件就行了)
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
char ma[25][25];
bool vis[25][25];
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int m,n;
int cnt;
void dfs(int x,int y)
{
int x1,y1;
vis[x][y]=1;
//printf("x:%d,y:%d\n",x,y);
cnt++;
for(int i=0;i<4;i++)
{
x1=x+dx[i];
y1=y+dy[i];
if(x1<m&&x1>=0&&y1<n&&y1>=0&&vis[x1][y1]!=1&&ma[x1][y1]=='.')
dfs(x1,y1);
}
}
int main()
{
while(~scanf("%d%d",&n,&m)&&m&&n)
{
cnt=0;
memset(vis,0,sizeof(vis));
memset(ma,'\0',sizeof(ma));
for(int i=0;i<m;i++)
scanf("%s",ma[i]);
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
if(ma[i][j]=='@')
{
dfs(i,j);
break;
}
printf("%d\n",cnt);
}
return 0;
}