编程介的小学生
2018-12-10 17:07
采纳率: 92.7%
浏览 576
已采纳

这是一个有关魔方的问题,请问怎么计算旋转的步数

Problem Description
Pocket Cube is a 3-D combination puzzle. It is a 2 × 2 × 2 cube, which means it is constructed by 8 mini-cubes. For a combination of 2 × 2 mini-cubes which sharing a whole cube face, you can twist it 90 degrees in clockwise or counterclockwise direction, this twist operation is called one twist step.
Considering all faces of mini-cubes, there will be totally 24 faces painted in 6 different colors (Indexed from 0), and there will be exactly 4 faces painted in each kind of color. If 4 mini-cubes' faces of same color rely on same large cube face, we can call the large cube face as a completed face.

图片说明

Now giving you an color arrangement of all 24 faces from a scrambled Pocket Cube, please tell us the maximum possible number of completed faces in no more than N twist steps.
Index of each face is shown as below:

图片说明

Input
There will be several test cases. In each test case, there will be 2 lines. One integer N (1 ≤ N ≤ 7) in the first line, then 24 integers Ci separated by a single space in the second line. For index 0 ≤ i < 24, Ci is color of the corresponding face. We guarantee that the color arrangement is a valid state which can be achieved by doing a finite number of twist steps from an initial cube whose all 6 large cube faces are completed faces.

Output
For each test case, please output the maximum number of completed faces during no more than N twist step(s).

Sample Input
1
0 0 0 0 1 1 2 2 3 3 1 1 2 2 3 3 4 4 4 4 5 5 5 5
1
0 4 0 4 1 1 2 5 3 3 1 1 2 5 3 3 4 0 4 0 5 2 5 2

Sample Output
6
2

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • blownewbee 2019-06-21 09:05
    已采纳
    点赞 评论
  • Moluth 2018-12-11 02:24

    这种2阶魔方总共有12种操作,每种操作对应一种数据变换。广度优先搜索,可以得出最小还原步数。
    假设最少还原步数是10,最后一层是12^9个节点,非常多,因此要做一下剪枝,记录每一步状态,如果当前状态存在,不继续搜索。

    点赞 评论

相关推荐 更多相似问题