xzc的二阶魔方最少步还原 Apare_xzc

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公式图来形象地表示:
    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之内。

猜你喜欢

转载自blog.csdn.net/qq_40531479/article/details/104441457