#P1099. Square Ice

Square Ice

描述

方形冰是水分子 H2O\mathrm{H_2O} 的一种二维排列方式,氧原子位于正方形晶格的顶点,每对相邻的氧原子之间有一个氢原子。氢原子必须在左右两侧伸出,但不允许在顶部或底部伸出。下面展示了一个 5×55\times5 的例子。

请注意,每个氢原子恰好与它相邻的一个氧原子相连,并且每个氧原子与它相邻的两个氢原子相连。(回想一下,一个水分子是由一个 $\mathrm{O}$ 连接两个 $\mathrm{H}$ 组成的一个单元。) 事实证明,我们可以用一种被称为交错符号矩阵($\mathrm{ASM}$)的东西来对方形冰的图案进行编码:水平方向的分子被编码为 $1$,垂直方向的分子被编码为 $-1$,而所有其他分子被编码为 $0$。所以,上面的图案将被编码为:

一个交错符号矩阵是一个元素为 $0$、$1$ 和 $-1$ 的方阵,其中每行和每列的元素之和都为 $1$,并且每行和每列中的非零元素的符号必须交替出现。(事实证明,交错符号矩阵和方形冰的图案之间存在一一对应的关系!) 你的任务是,对于给定的交错符号矩阵,以与上面的例子相同的格式显示方形冰的图案。用短横线($-$)表示水平连接,用竖线($\vert$)表示垂直连接。图案应该用星号($*$)组成的边框包围,左对齐,并且在相邻的氢原子($\mathrm{H}$)和氧原子($\mathrm{O}$)之间应该恰好有一个字符:可以是一个空格、一条短横线或者一条竖线。

输入

输入由多个测试用例组成。每个测试用例由一行上的一个正整数 mmm11m\leq 11)开始,后面跟着 mm 行,给出一个交错符号矩阵的元素。每行给出交错符号矩阵的一行元素,元素之间用单个空格分隔。输入的结束由包含 m=0m = 0 的一行表示。

输出

对于每个测试用例,按照示例输出中所示的格式打印测试用例编号(从 11 开始),后面跟着一个空行,再后面是按照上述格式的相应的方形冰图案。不同测试用例的输出之间用一个空行分隔。

0 1
1 0
4
0 1 0 0
1 -1 0 1
0 0 1 0
0 1 0 0
0
Case 1:

***********
*H-O H-O-H*
*  |      *
*  H   H  *
*      |  *
*H-O-H O-H*
***********

Case 2:

*******************
*H-O H-O-H O-H O-H*
*  |       |   |  *
*  H   H   H   H  *
*      |          *
*H-O-H O H-O H-O-H*
*      |   |      *
*  H   H   H   H  *
*  |           |  *
*H-O H-O H-O-H O-H*
*      |          *
*  H   H   H   H  *
*  |       |   |  *
*H-O H-O-H O-H O-H*
*******************

来源

2001 年美国中东部地区竞赛