1. 程式人生 > >第五屆藍橋杯軟體類省賽真題 Java本科A 六角填數

第五屆藍橋杯軟體類省賽真題 Java本科A 六角填數



標題:六角填數


    如圖【1.png】所示六角形中,填入1~12的數字。


    使得每條直線上的數字之和都相同。


    圖中,已經替你填好了3個數字,請你計算星號位置所代表的數字是多少?


請通過瀏覽器提交答案,不要填寫多餘的內容。


程式碼如下 :

首先 每一條線的和 是可以 計算得到的 ,所以就可以直接使用 即可。

public class Main {
	public static void main(String args[]){
		int arr[] = {1,2,3,4,5,6,7,8,9,10,11,12};
		
		fun(arr,0,11);
	}
	//sum  為26 因為 我們每次相加  都會 加兩次  所以 結果就  為  (1+。。。+12)*2/6 = 26
	public static void fun(int a[],int s,int n){
		if(s == n){
			if(a[0] == 1&&a[1] == 8&&a[11] == 3){
				if(a[0]+a[2]+a[5]+a[7] ==26&&a[0]+a[3]+a[6]+a[10] ==26&&a[1]+a[5]+a[8]+a[11] ==26&&a[1]+a[2]+a[3]+a[4] ==26&&a[4]+a[6]+a[9]+a[11] ==26&&a[7]+a[8]+a[9]+a[10] ==26){
					System.out.println(a[5]);
				}
			}
		}else{
			for(int i = s;i<=n;i++){   //遞迴  實現  12個元素 的交換  保證 有 A 12 12 de  可能性
				int t = a[s];
				a[s] = a[i];
				a[i] = t;
				fun(a,s+1,n);
				t = a[s];
				a[s] = a[i];
				a[i] = t;
			}	
		}
		
	}

}