第五屆藍橋杯軟體類省賽真題 Java本科A 六角填數
阿新 • • 發佈:2019-02-18
標題:六角填數
如圖【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; } } } }