/*標題:魔方狀態 二階魔方就是只有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;//回溯 } } } }