#include<iostream> #include<cstdio> using namespace std; char map[21][21]; int w,h,ans; int dir[4][2]={0,-1,0,1,1,0,-1,0}; void bfs(int x,int y) { int dx,dy; for(int i=0;i<4;i++) { dx=x+dir[i][0]; dy=y+dir[i][1]; if(dx>=0&&dx<h&&dy>=0&&dy<w&&map[dx][dy]=='.') { map[dx][dy]='#'; ans++; bfs(dx,dy); } } } int main() { int i,j,X,Y; while(scanf("%d %d",&w,&h)!=EOF)//这里可以直接用scanf("%d%d%*c",&w,&h)!=EOF,其中%*c起到消除字符分割负的作用。 if(w==0&&h==0)break; else { getchar(); for(i=0;i<h;i++) { for(j=0;j<w;j++) { scanf("%c",&map[i][j]); if(map[i][j]=='@') { X=i; Y=j; } } getchar(); } ans=1; bfs(X,Y); printf("%d\n",ans); }return 0; }
HDU-1312-red and black
最新推荐文章于 2018-08-17 15:01:09 发布