1. 程式人生 > >標題:五星填數

標題:五星填數

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 }

標題:五星填數