#include using namespace std; char a[105][105]; int f[105][105]; int fx[4][2] = {{1,0},{0,1},{-1,0},{0,-1}}; int n,m; int sx,sy; int sum;
void dfs(int x,int y){ for(int i=0;i<4;i++){ int xx = x+fx[i][0]; int yy = y+fx[i][1]; if(f[xx][yy]==1 || a[xx][yy]=='#' ||xx<1||xx>n||yy<1||yy>m) continue; f[xx][yy]=1; sum++; dfs(xx,yy); } }
int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; if(a[i][j]=='@'){ sx = i; sy = j; } } } f[sx][sy] = 1; dfs(sx,sy); cout<<sum;
return 0;
}
共 1 条回复
#include using namespace std; char q[10010][10010]; int n,m; int dx[4]={-1,0,1,0}; int dy[4]={0,1,0,-1}; int bfs(int x,int y){ int sum=1; q[x][y]='#'; for(int i=0;i<4;i++){ int a=x+dx[i]; int b=y+dy[i]; if(a>=n || a<0 || b>=m || b<0) continue; if(q[a][b]!='.') continue; sum+=bfs(a,b); } return sum; } int main(){ int a,b; while(1){ cin>>m>>n; if(n==0 && m==0){ return 0; } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>q[i][j]; if(q[i][j]=='@'){ a=i,b=j; } } } cout<<bfs(a,b)<<endl; }
}