刚学会dfs,好像没人用C写,我就填补一下空白.
C 代码
#include <stdlib.h>
#include <stdio.h>
char ss[20][20];
int res;
int dfs(int bx,int by,int m,int n)
{
int nx,ny;
ss[bx][by]='#';
res++;
nx=bx+1;
ny=by;
if(nx>=0 && nx<m && ny>=0 && ny<n && ss[nx][ny]=='.')
dfs(nx,ny,m,n);
nx=bx-1;
ny=by;
if(nx>=0 && nx<m && ny>=0 && ny<n && ss[nx][ny]=='.')
dfs(nx,ny,m,n);
nx=bx;
ny=by+1;
if(nx>=0 && nx<m && ny>=0 && ny<n && ss[nx][ny]=='.')
dfs(nx,ny,m,n);
nx=bx;
ny=by-1;
if(nx>=0 && nx<m && ny>=0 && ny<n && ss[nx][ny]=='.')
dfs(nx,ny,m,n);
return res;
}
int main()
{
int m,n;
int bx,by;
int i,j;
while(1)
{
scanf("%d %d",&n,&m);
if(m==0&&n==0)break;
for(i=0;i<m;i++)
{
scanf("%s",&ss[i]);
for(j=0;j<n;j++)
{
if(ss[i][j]=='@')
{
bx=i;
by=j;
}
}
}
res=dfs(bx,by,m,n);
printf("%d\n",res);
res=0;
}
return 0;
}