嗯、模板题。
#include#include #include using namespace std;bool vis[21][21];int cnt,w,h;void dfs(int x,int y){ if(x>0&x<=w&&y>0&&y<=h&&!vis[x][y]) { ++cnt; vis[x][y]=true; dfs(x+1,y); dfs(x,y+1); dfs(x-1,y); dfs(x,y-1); }}int main(void){ int x,y,i,j; char c; while(scanf("%d%d",&w,&h),w&&h) { memset(vis,0,sizeof(vis)); cnt=0; for(j=1;j<=h;j++) for(i=1;i<=w;i++) { cin>>c; if(c=='#') vis[i][j]=true; if(c=='@') x=i,y=j; } dfs(x,y); printf("%d\n",cnt); } return 0;}