1182 : 图案的最小变换
Time Limit: 1 Sec Memory Limit: 128 MB Submitted: 56 Solved: 34Description
给出一个正方形图案和它的变换图案,称为图案变换对。编写程序,求图案变换对之间的最小变换。图案是由黑白两种小方块构成的。可能的变换包括:
- 旋转 90 度:图案顺时针旋转 90 度,记做 rot90
- 旋转 180 度:图案顺时针旋转 180 度,记做 rot180
- 旋转 270 度:图案顺时针旋转 270 度,记做 rot270
- 竖直映像:图案以其上方的一条平行线为轴翻转,记做 vr
- 联合变换:图案首先做一次竖直映像变换,然后做一次旋转变换,记做 vr-rot90 或 vr-rot180 或 vr-rot270
- 保持:图案和变换后的图案完全一样,记做 idt
- 错误:无法应用上述变换将初始图案变换成它的变换图案,记做 imp
为了比较不同变换的大小,定义:旋转变换的代价小于映像变换,小角度旋转变换的代价小于大角度旋转变换,“保持变换”的代价最小。注意:对本题而言,只有上面列出的变换是合法的,如果某个图案对可以由多个变换得到,则应选择代价最小的变换。
Input
输入文件中包含多组图案变换对。每一对图案数据的起始行都是一个整数,表示正方形图案的边长 a(以一个小方块为单位, 1<=a<=100),后续的 a 行,每一行包含了原图案的一行和变换图案的对应行,两者之间用一个空格分开。黑色小方块用 b 表示,白色小方块用 o 表示。
Output
输出文件的每一行对应输入文件的每一个图案变换对。其中每行开始的整数表示对应图案对在输入文件中出现的序号,紧跟一个空格,然后就是该图案对的最小变换,采用上述记号表示。
Sample
5 booob oooob obooo ooobo ooobo obooo oobob ooboo oooob bboob 6 oooobb boooob oooboo bobooo bboobo oboobo oobooo ooobob oooboo oobooo ooboob oobooo 2 bo bo ob ob 4 oobo ooob bboo oooo oooo bboo ooob oobo 5 boooo obooo obooo ooboo obooo ooboo ooobo oooob oooob boooo 4 oboo oobo obob booo oooo oobb oobo oooo 2 oo bb bb oo
1 rot90 2 rot270 3 idt 4 vr 5 imp 6 vr-rot270 7 rot180