标签:计算机 void div span imp 技术 als 多少 图案
如【图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 }
标签:计算机 void div span imp 技术 als 多少 图案
原文地址:http://www.cnblogs.com/lolybj/p/6828557.html