题意:给定一个迷宫,求与’@’相连的面积一共有多大。
思路:红黑砖问题,直接从’@’处DFS并记录个数。
#include <bits/stdc++.h>
using namespace std;
char mp[30][30];
int cnt, n, m;
int next[4][2] = {1,0,-1,0,0,1,0,-1};
void dfs(int x, int y)
{
cnt++;
mp[x][y]='#';
for (int i = 0; i < 4; i++)
{
int nx = x + next[i][0];
int ny = y + next[i][1];
if (nx<0 || ny<0 || nx>=n || ny>=m)
continue;
if (mp[nx][ny]=='.')
dfs(nx, ny);
}
return ;
}
int main(void)
{
int T, cas=1;
scanf("%d", &T);
while (T--)
{
cnt = 0;
scanf("%d %d", &m, &n);
for (int i = 0; i < n; i++)
scanf(" %s", mp[i]);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (mp[i][j]=='@')
{
dfs(i, j);
}
}
}
printf("Case %d: %d\n", cas++, cnt);
}
return 0;
}