1. 程式人生 > >第八屆藍橋杯JAVAB組第四題

第八屆藍橋杯JAVAB組第四題

題目大概是,

有一個魔方,上  黃色 | 下  橙色  | 左  綠色 |  右  綠色 | 前 橙色 | 後 黃色

問魔方總共有多少種狀態。

我的答案:216

我的思路:剛拿到這題有點懵逼,簡單分析了一下,其實魔方總共八塊,這八塊其實就三種顏色

4塊是綠黃橙,2塊是綠橙橙,2塊是綠黃黃。

我們就可以把該題簡化為四個1,兩個2,兩個3的排序問題。

需要注意的是11112233和33221111是一樣的。

程式碼如下:

	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++) {
			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;
			}
		}
	}