標題:五星填數
阿新 • • 發佈:2017-05-09
images void 鏡像 mage [] 要求 ret ati 相等
如【圖1.png】的五星圖案節點填上數字:1~12,除去7和11。
要求每條直線上數字和相等。
如圖就是恰當的填法。
請你利用計算機搜索所有可能的填法有多少種。
註意:旋轉或鏡像後相同的算同一種填法。
請提交表示方案數目的整數,不要填寫任何其它內容。
旋轉有5種,每個旋轉的鏡像有2種,所以最後除以5*2
1 import java.util.Arrays; 2 import java.util.Scanner; 3 4 class Main{ 5 static boolean[] b; 6 static int[] a; 7 static int sum;8 public static void main(String[] args) { 9 b = new boolean[13]; 10 b[7] = true; 11 b[11] = true; 12 a = new int[11]; 13 f(1); 14 System.out.println(sum/10); 15 } 16 public static void f(int h){ 17 if(h>10){ 18 if(f1()){19 sum++; 20 //System.out.println(Arrays.toString(a)); 21 } 22 return ; 23 } 24 for(int j=1;j<=12;j++){ 25 if(!b[j]){ 26 b[j] = true; 27 a[h] = j; 28 f(h+1); 29 b[j] = false; 30 } 31 } 32 } 33 /* 1 34 * 2 3 4 5 35 * 6 7 36 * 8 37 * 9 10 38 * */ 39 public static boolean f1(){ 40 int a1 = a[1]+a[3]+a[6]+a[9]; 41 int a2 = a[1]+a[4]+a[7]+a[10]; 42 int a3 = a[2]+a[3]+a[4]+a[5]; 43 int a4 = a[2]+a[6]+a[8]+a[10]; 44 int a5 = a[5]+a[7]+a[8]+a[9]; 45 if(a1==a2&&a1==a3&&a1==a4&&a1==a5){ 46 //System.out.println(a1+" "+a2+" "+a3+" "+a4+" "+a5+" "); 47 return true; 48 }else{ 49 return false; 50 } 51 } 52 53 }
標題:五星填數