#include <iostream>
#include <string.h>
using namespace std;
char a[15][15];
int b[15][15];
bool used[15][15] = {};
int main()
{
int m, n;
int count = 0;
cin >> m;
while (true)
{
cin >> n;
memset(a, '*', sizeof(a));
memset(b, 0, sizeof(b));
memset(used, false, sizeof(used));
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= n; j++)
{
cin >> a[i][j];
}
}
int num = 0;
for (int i = 1; i <= m; i++)
for (int j = 1; j <= n; j++)
{
if ((a[i - 1][j] == '*' || a[i][j - 1] == '*') && a[i][j] != '*')
b[i][j] = ++num;
}
cout << "puzzle #" << ++count << ":" << endl;
cout << "Across" << endl;
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= n; j++)
{
if (b[i][j] && !used[i][j])
{
printf("%3d", b[i][j]);
cout << ".";
int y = j;
while (a[i][y] != '*' && y <= n)
{
cout << a[i][y];
used[i][y] = true;
y++;
}
cout << endl;
}
}
}
cout << "Down" << endl;
memset(used, false, sizeof(used));
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= n; j++)
{
if (b[i][j] && !used[i][j])
{
printf("%3d", b[i][j]);
cout << ".";
int x = i;
while (a[x][j] != '*' && x <= m)
{
cout << a[x][j];
used[x][j] = true;
x++;
}
cout << endl;
}
}
}
cin >> m;
if (m)
{
cout << endl;
}
else
{
return 0;
}
}
}
UVa232 - Crossword Answers
于 2023-11-28 14:47:24 首次发布