#P1713. Divide et unita
Divide et unita
本题没有可用的提交语言。
描述
多联骨牌是一种二维图形,由若干个相邻边相连的正方形组成,使得车(国际象棋中的棋子)可以从属于该图形的一个正方形,通过每次移动到其垂直或水平方向且也属于该图形的相邻正方形,从而遍历多联骨牌的所有正方形。
在一张无限大的方格纸上,标记了个正方形(),它们构成了一个多联骨牌。你需要编写一个程序,将这个多联骨牌分割成另外两个多联骨牌和,通过旋转和平移(不允许镜像反射),可以用和拼成一个的正方形。只需要找到一种可能的解决方案即可。
输入
输入文件将包含方格纸中包含多联骨牌的那部分图形,用字符“.”(点)表示空白区域,用“*”(星号)表示属于该图形的正方形(因为不可能将无限大的方格纸放入文件中,所以输入文件仅描述了其中一部分;所有省略的正方形都被视为空白)。输入文件的行中不会有其他字符。输入文件中每行的长度不会超过个字符,且行数不会超过行。对于给定的输入文件,总是至少存在一种解决方案。
输出
将包含多联骨牌的方格纸的给定部分图形原样输出到输出文件中,根据每个正方形属于多联骨牌(部分)还是,将每个星号替换为字符或。除了上述描述的更改之外,输出文件应包含与输入文件顺序相同的行。
输入数据 1
..
......
....*.
..*.*
..***
..****
..*..*
..****
.......
输出数据 1
..
......
....B.
..B.B
..BBB
..AABA
..A..A
..AAAA
.......
提示
输入可能大到。
来源
1997 年欧洲东北部地区竞赛