题意:这道题是一道搜索题,要求求出所有的点的数量,并且该点还不能被#包围。
#include<stdio.h>
#include<string.h>
int map[21][21];
int m,n,bx,by,count;
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int dfs(int x,int y)
{
int i,sx,sy;
count++;
for(i=0;i<4;i++)
{
sx=x+dir[i][0];
sy=y+dir[i][1];
if(sx>=0&&sx<n&&sy>=0&&sy<m&&map[sx][sy]=='.')
{
map[sx][sy]='#';
dfs(sx,sy);
}
}
}
int main()
{
int i,j;
while(scanf("%d%d",&m,&n)!=EOF)
{
getchar();
if(m==0&&n==0)
break;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%c",&map[i][j]);
if(map[i][j]=='@')
{
bx=i;
by=j;
}
}
getchar();
}
count=0;
map[bx][by]='#';
dfs(bx,by);
printf("%d\n",count);
}
return 0;
}
点击打开链接