深搜题,字母 A 的图形中,相连的空格区域数为 2;字母 C 的图形中,相连的空格区域数为 1。
#include <cstdio>
using namespace std;
const int MAXN = 55;
char mp[MAXN][MAXN];
//深搜,将(r,c)及其相连的' '替换为'*'
void DFS(int r, int c)
{
if (r < 0 || r > MAXN || c < 0 || c > MAXN)
return;
if (mp[r][c] == '*')
return;
mp[r][c] = '*';
DFS(r - 1, c);
DFS(r + 1, c);
DFS(r, c - 1);
DFS(r, c + 1);
}
//读入一个完整的字符图形
int readin()
{
for (int i = 0; i < MAXN; i++)
{
for (int j = 0; j < MAXN; j++)
mp[i][j] = ' ';
}
char c;
if ((c = getchar()) == EOF)
return 0;
else
mp[1][1] = c;
for (int j = 2; (c = getchar()) != '\n'; j++)
mp[1][j] = c;
int j = 0;
for (int i = 2; j != 1; i++)
{
for (j = 1; (c = getchar()) != '\n' && c != EOF; j++)
mp[i][j] = c;
}
return 1;
}
int main()
{
while (readin())
{
int num = 0;
for (int i = 0; i < MAXN; i++)
{
for (int j = 0; j < MAXN; j++)
{
if (mp[i][j] == ' ')
{
++num;
DFS(i, j);
}
}
}
printf(num == 2 ? "A\n" : "C\n");
}
return 0;
}
继续加油。