做这题郁闷的有一点,就是判断是否在范围里,由于没判断,结果wrong 了好多次!!!
#include"stdio.h"
#include"string.h"
char map[200][200];
int n,m,ans,s;
int dr[4] = {-1,0,1,0};
int dc[4] = {0,1,0,-1};
void dfs(int r,int c)
{
int i,tempx,tempy;
ans++;
map[r][c]='#';
for(i=0;i<4;i++)
{
tempx=r+dr[i];
tempy=c+dc[i];
if(tempx>=1&&tempx<=m&&tempy>=1&&tempy<=n&&map[tempx][tempy]=='.')//判断,刚开始由于没写,错了好多次!原来写的几个没判断结果ac,
//于是这题也没判断结果·····················
dfs(tempx,tempy);
}
}
int main()
{
int i,j,sx,sy;
while(scanf("%d%d",&n,&m),n&&m)
{
ans=0;
for(i=1;i<=m;i++)
scanf("%s",map[i]+1);
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
if(map[i][j]=='@')
{
sx=i;sy=j;
}
}
}
dfs(sx,sy);
printf("%d\n",ans);
}
return 0;