- 题目大意
就是求和‘@‘相连的‘.’有多少个(包括@,还有#是无法通过的)。
- 解题思路
用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;
}