#P4205. [NOI2005] 智慧珠游戏

[NOI2005] 智慧珠游戏

题目描述

智慧珠游戏拼盘由一个三角形盘件和 1212 个形态各异的零件组成。拼盘的盘件如图 1 所示:

1212 个零件按照珠子数分 33 大类。

  • 11 大类,有 33 个珠子,只有 11 种形状;
  • 22 大类,有 44 个珠子,有 33 种形状;
  • 33 大类,有 55 个珠子,有 88 种形状。

对于由珠子构成的零件,可以放到盘件的任一位置,条件是能有地方放,且尺寸合适,所有的零件都允许旋转(0°0\degree90°90\degree180°180\degree270°270\degree)和翻转(水平、竖直)。

图 2 示出了一种拼盘方案。为便于描述可将图 2 抽象成一个数据为字符的二维数组来表示。

B
BK
BKK
BJKK
JJJDD
GJGDDC
GGGCCCI
EEEHHIIA
ELHHHIAAF
ELLLLIFFFF

现给出一个盘件的初始布局,求一种可行的智慧珠摆放方案,使所有的零件都能放进盘件中。

输入格式

文件中包含初始的盘件描述,一共有 1010 行,第 ii 行有 ii 个字符。如果第 ii 行 的第 jj 个字符是字母 A\texttt{A}L\texttt{L} 中的一个,则表示第 ii 行第 jj 列的格子上已经放了零件,零件的编号为对应的字母。如果第 ii 行的第 jj 个字符是 .,则表示第 ii 行 第 jj 列的格子上没有放零件。

输入保证预放的零件已摆放在盘件中。

输出格式

如果能找到解,向输出文件打印 1010 行,为放完全部 1212 个零件后的布局。其中,第 ii 行应包含 ii 个字符,第 ii 行的第 jj 个字符表示第 ii 行第 jj 列的格子上放的是哪个零件。

如果无解,输出单独的一个字符串 No solution(请注意大小写)。

所有的数据保证最多只有一组解。

.
..
...
....
.....
.....C
...CCC.
EEEHH...
E.HHH....
E.........
B
BK
BKK
BJKK
JJJDD
GJGDDC
GGGCCCI
EEEHHIIA
ELHHHIAAF
ELLLLIFFFF