【习题 3-6 UVA - 232】Crossword Answers
习题 UVa 232
2023-09-14 09:03:45 时间
【链接】 我是链接,点我呀:)
【题意】
【题解】
模拟题。注意场宽为3【代码】
#include <bits/stdc++.h>
using namespace std;
const int N = 10;
int n, m, num[N + 10][N + 10], last[N + 10];
string s[N + 10];
int main()
{
/*freopen("F:\\rush.txt", "r", stdin);*/
int kk = 0;
while (cin >> n && n)
{
if (kk) puts("");
memset(last, 0, sizeof last);
cin >> m;
for (int i = 0; i < n; i++) cin >> s[i];
int cnt = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (s[i][j]!='*' && (j == 0 || i == 0 || s[i][j - 1] == '*' || s[i - 1][j] == '*'))
num[i][j] = ++cnt;
printf("puzzle #%d:\n", ++kk);
printf("Across\n");
for (int i = 0; i < n; i++)
{
int now = 0;
for (int j = now; j < m; j++)
if (j >= now && isalpha(s[i][j]) && (j == 0 || s[i][j - 1] == '*'))
{
printf("%3d.", num[i][j]);
while (j < m && isalpha(s[i][j]))
putchar(s[i][j++]);
puts("");
now = j;
}
}
printf("Down\n");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
if (isalpha(s[i][j]) && (i == 0 || s[i - 1][j] == '*') && i >= last[j])
{
printf("%3d.", num[i][j]);
int now = i;
while (now < n && s[now][j] != '*') putchar(s[now++][j]);
last[j] = now;
puts("");
}
}
}
return 0;
}
相关文章
- C++primer习题--第1章
- C语言/C++常见习题问答集锦之五环破冰
- C语言/C++常见习题问答集锦(六十三) 之endl引发的思考
- 【习题 4-7 UVA - 509】RAID!
- 【习题 4-3 UVA - 220】Othello
- 【习题 8-6 UVA - 1611】 Crane
- 【习题 8-3 UVA - 12545】Bits Equalizer
- 【习题 7-7 UVA-12558】Egyptian Fractions (HARD version)
- 【习题 6-11 UVA - 10410】Tree Reconstruction
- 【习题 6-6 UVA - 12166 】Equilibrium Mobile
- 【习题 3-11 UVA - 1588】Kickdown
- 【习题 3-4 UVA - 455】Periodic Strings
- 【习题 5-11 UVA 12504 】Updating a Dictionary
- 【习题 5-7 UVA - 12100】Printer Queue
- 习题 8.1 请检查下面程序,找出其中的错误,并改正之。然后上级调试,使之能正常运行。运行时从键盘输入时、分、秒的值,检查输出是否正确。
- 习题 8.9 写一函数,将一个3*3的整型矩阵转置。(指针法)
- 习题 7.16 写一个函数,输入一个十六进制数,输出相应的十进制数。
- 高等数学(第七版)同济大学 习题12-7 个人解答
- 高等数学(第七版)同济大学 总习题七 (前4题)个人解答
- 高等数学(第七版)同济大学 习题10-3 (前9题)个人解答
- 计算机网络课后作业习题3
- Java刷题面试系列习题(十九)
- Java刷题面试系列习题(十三)