#include <cstring>
#include <stdio.h>
int count;
int m,n;
int sx,sy;
char map[20][20];
bool visited[20][20];
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void dfs(int x,int y)
{
if(x<0||x>=m||y<0||y>=n)
return;
for(int i=0;i<4;i++)
{
int nx= x+dx[i];
int ny = y+dy[i];
if(map[nx][ny]=='.'&&!visited[nx][ny])
{
visited[nx][ny]=true;
count++;
dfs(nx,ny);
}
}
}
int main()
{
freopen("1.txt","r",stdin);
while(scanf("%d%d",&n,&m)&&m!=0)
{
char temp;
memset(map,0,sizeof(map));
memset(visited,0,sizeof(visited));
scanf("%c",&temp);
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
scanf("%c",&map[i][j]);
if(map[i][j]=='@')
{
sx=i;
sy=j;
}
}
scanf("%c",&temp);
}
count=0;
count++;
map[sx][sy]='.';
visited[sx][sy]=true;
dfs(sx,sy);
printf("%d\n",count);
}
while(1);
}
Unsolved ---poj1979 不知哪里错了
最新推荐文章于 2022-02-10 09:25:37 发布