xzc的二阶魔方最少步还原
时间限制:1000ms
空间限制:256M
其它说明:Special Judge
题面:
xzc是一个魔方爱好者,他最近在练习二阶魔方全预判,他想得到12步之内的二阶魔方还原步骤,你能帮帮他吗?
如果你没玩过魔方,那么请看下面的说明:
符号说明:
我们遵循WCA规范,对魔方的转动有如下操作:
U
,D
,L
,R
,F
,B
分别表示上,下,左,右,前,后面顺时针旋转90°U'
,D'
,L'
,R'
,F'
,B'
分别表示上,下,左,右,前,后面逆时针旋转90°U2
,D2
,L2
,R2
,F2
,B2
则分别表示上,下,左,右,前,后面旋转180°x
代表魔方整体向R方向旋转90°y
代表魔方整体向U方向旋转90°z
代表魔方整体向F方向旋转90°x'
,y'
,z'
,x2
,y2
,z2
同理
我们这里借用gan魔方CFOP公式图来形象地表示:
二阶魔方同理
正阶魔方配色说明:
N*N*N的正阶魔方(N>=2)标准配色为(黄色为顶,红色在前看):
上黄 下白 左蓝 右绿 前红 后橙
黄白相对 蓝绿相对 红橙相对
xzc不喜欢转动后面,左面和底层,因为那样不顺手,影响还原魔方速度。现在他有一个打乱的二阶魔方,已知每个面四个块的颜色,你能告诉他如何在12步之内用集合{R
,U
,F
,R'
,U'
,F'
,R2
,U2
,F2
}中的操作还原吗?(U2
,R2
,F2
都算作一步)
输入格式:
输入为一个长度为24的字符串,字符串的字母来自集合{Y
,W
,B
,G
,R
,O
},这六个字母分别表示黄色(Yellow)
,白色(White)
,蓝色
,绿色
,红色
,橙色
,长度为24的字符串4个连续的表示一个面,一共六个面。表示的顺序为:上,下,左,右,前,后。 每个面的四个字母分别表示魔方展开图中这个面的:左上
,右上
,右下
,左下
的颜色。具体可参见样例说明。
输出格式
输出有两行。第一行为正整数step
, 代表还原魔方的步数x, 要求x<=12。第二行为一个不包含空格的字符串str
,表示魔方还原的步骤。str
只能包含{R
,U
,F
,R'
,U'
,F'
,R2
,U2
,F2
}中的操作,每个操作算一步。答案不唯一,合理即可。保证输入有12步之内的解,且输入状态非还原态。
样例输入:
BYGGYGWWORRBYRBWWOOBGYOR
样例输出:
9
R2U'F2UF'U2R2FR2
样例说明:
- 样例的打乱为:黄顶红前 R2 F’ R2 U2 F U’ F2 U R2
- 魔方打乱后的展开图如下:
- 魔方打乱后的立体视图如下:
- 我们可以发现样例输出的答案和打乱互为逆过程,所以一定是合理的,而且步数也在12之内。