- 题目大意
就是求和‘@‘相连的‘.’有多少个(包括@,还有#是无法通过的)。
- 解题思路
用DFS即可解出
- 代码
#include<cstdio> #include<cstring> using namespace std; char maps[40][40]; int vis[40][40]; int dx[4] = { 1,-1,0,0 }; int dy[4] = { 0,0,1,-1 }; int sum,n,m; int dfs(int x,int y) { for(int i=0;i<4;i++) { int xx=dx[i]+x; int yy=dy[i]+y; if(maps[xx][yy]=='.'&&vis[xx][yy]==0&&xx>=0&&yy>=0&&xx<m&&yy<n) { sum++; vis[xx][yy]=1; dfs(xx,yy); } } return sum; } int main() { int t,x,y; scanf("%d",&t); for(int i=1;i<=t;i++) { memset(vis,0,sizeof(vis)); memset(maps,0,sizeof(maps)); scanf("%d%d",&n,&m); sum=1; getchar(); for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { scanf("%c",&maps[i][j]); if(maps[i][j]=='@') { x=i; y=j; } } getchar(); } int tmp=dfs(x,y); printf("Case %d: %d ",i,tmp); } return 0; }