#P1128. Frame Stacking

    ID: 129 传统题 1000ms 256MiB 尝试: 3 已通过: 1 难度: 10 上传者: 标签>搜索DFS图结构拓扑排序Southern African 2001

Frame Stacking

题目描述

考虑在一个 9×8 的矩阵上放置的 5 个画框,如下所示:

........ ........ ........ ........ .CCC....

EEEEEE.. ........ ........ ..BBBB.. .C.C....

E....E.. DDDDDD.. ........ ..B..B.. .C.C....

E....E.. D....D.. ........ ..B..B.. .CCC....

E....E.. D....D.. ....AAAA ..B..B.. ........

E....E.. D....D.. ....A..A ..BBBB.. ........

E....E.. DDDDDD.. ....A..A ........ ........

E....E.. ........ ....AAAA ........ ........

EEEEEE.. ........ ........ ........ ........

1 2 3 4 5

</p>

现在将它们从上到下依次堆叠,1 在最底层,5 在最顶层。如果一个画框的某部分覆盖了另一个画框的部分,那么被覆盖部分就会被隐藏。 观察这 5 个堆叠起来的画框,我们看到如下结果:

.CCC....

ECBCBB..

DCBCDB..

DCCC.B..

D.B.ABAA

D.BBBB.A

DDDDAD.A

E...AAAA

EEEEEE..

那么这些画框从下到上的堆叠顺序是怎样的呢?答案是 EDABC。

你的任务是,给定一个堆叠画框的图像,确定画框从下到上的堆叠顺序。规则如下:

  1. 画框的宽度始终恰好为 1 个字符,且边框长度从不短于 3 个字符。
  2. 每个画框的四条边至少有一部分是可见的。一个角能显示两条边。
  3. 画框用大写字母标记,且不会有两个画框被赋予相同的字母。

输入格式

每个输入块中,第一行是高度 hhhh<=30),第二行是宽度 wwww<=30)。然后是 hh 个字符串,每个字符串包含 ww 个字符,表示堆叠画框的图像。 输入可能包含多个上述格式的输入块,块与块之间没有空行。输入中的所有块都必须按顺序处理。

输出格式

将结果输出到标准输出。按照画框从下到上的堆叠顺序输出画框的字母。如果存在多种可能的顺序,按字母顺序列出所有可能,每种顺序占一行。每个输入块至少存在一种合法的顺序。按顺序列出输入中所有块的输出,中间没有空行(块与块之间也没有)。

9
8
.CCC....
ECBCBB..
DCBCDB..
DCCC.B..
D.B.ABAA
D.BBBB.A
DDDDAD.A
E...AAAA
EEEEEE..
EDABC

来源

2001年南非