魔方状态

/*标题:魔方状态

二阶魔方就是只有2层的魔方,只由8个小块组成。
如图p1.png所示。

小明很淘气,他只喜欢3种颜色,所有把家里的二阶魔方重新涂了颜色,如下:

前面:橙色
右面:绿色
上面:黄色
左面:绿色
下面:橙色
后面:黄色

请你计算一下,这样的魔方被打乱后,一共有多少种不同的状态。

如果两个状态经过魔方的整体旋转后,各个面的颜色都一致,则认为是同一状态。

请提交表示状态数的整数,不要填写任何多余内容或说明文字。
将魔方看作一个平面*/
package test;

import java.util.ArrayList;
import java.util.*;
public class 魔方状态 {
    static int[] v = new int[8];
    static int[] s = new int[8];
    static ArrayList<String> a = new ArrayList<String>();
    public static void main(String[] args) {
        s(0);
        System.out.println(a.size());
    }
    public static void s(int code){
        if(code==8){
            String t = "";
            String t1 = "";//t正序,t1倒序
            for (int i = 0; i < s.length; i++) {
                t += s[i]+"";
                t1 += s[s.length-1-i]+"";
            }
            if(!a.contains(t)&&!a.contains(t1)){
                a.add(t);
            }
            return;
        }
        for (int i = 0; i < 8; i++) {//用i选择方格
            if(v[i]==0){
                v[i] = 1;
                if(i<4){//四个黄绿橙
                    s[code] = 1;
                }
                else if(i<6){//两个黄绿
                    s[code] = 2;
                }
                else if(i<8){//两个橙绿
                    s[code] = 3;
                }
                s(code+1);
                v[i] = 0;//回溯
            }
        }
    }

}
原文地址:https://www.cnblogs.com/ljs-666/p/8595594.html