题目:http://acm.hdu.edu.cn/showproblem.php?pid=1312
水一样的深搜,,
#include <stdio.h>
#define MAX 20
int n,m,count;
int dri[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
char map[MAX][MAX];
void dfs(int x,int y)
{
count++;
int xx,yy;
map[x][y]='#';
for(int i=0;i<8;i++)
{
xx=x+dri[i][0];
yy=y+dri[i][1];
if(xx<0||yy<0||xx>=n||yy>=m)
continue;
if(map[xx][yy]=='.')
dfs(xx,yy);
}
}
int main()
{
int i,j,a,b,flag;
while(scanf("%d%d",&m,&n),n||m)
{
count=0;
flag=1;
for(i=0;i<n;i++)
{
scanf("%s",map[i]);
for(j=0;flag&&j<m;j++)
{
if(map[i][j]=='@')
a=i,b=j,flag=0;
}
}
dfs(a,b);
printf("%d\n",count);
}
return 0;
}