蓝桥杯javaB--五星填数
标题:五星填数
如【图1.png】的五星图案节点填上数字:1~12,除去7和11。
要求每条直线上数字和相等。
如图就是恰当的填法。
请你利用计算机搜索所有可能的填法有多少种。
注意:旋转或镜像后相同的算同一种填法。
请提交表示方案数目的整数,不要填写任何其它内容。
结果:120种
public class 五星填数 { static int a[] = {1,2,3,4,5,6,8,9,10,12}; static int count=0;//记录结果数目 public static void print()//每一种情况 { for(int i:a) { System.out.print(i+" "); } System.out.println(); } public static void One()//每一种情况 { int sum1 = a[1]+a[2]+a[3]+a[4]; int sum2 = a[0]+a[2]+a[5]+a[8]; if(sum1 == sum2) { int sum3 = a[0]+a[3]+a[6]+a[9]; int sum4 = a[1]+a[5]+a[7]+a[9]; int sum5 = a[4]+a[6]+a[7]+a[8]; if(sum1==sum3&&sum1==sum4&&sum1==sum5)//满足条件 { print(); count++; } } } public static void fun(int m)//产生所有结果 { if(m==0) { //print(); One(); } else { int t=0; for(int i=0;i<=m;i++) { t = a[i]; a[i] = a[m]; a[m] = t; fun(m-1); t = a[i]; a[i] = a[m]; a[m] = t; } } } public static void main(String[] args) { // TODO Auto-generated method stub fun(9); System.out.print(count); } }