五星填数_蓝桥杯

来源:互联网 发布:java接口的方法 编辑:程序博客网 时间:2024/05/02 06:45

五星图案节点填上数字:1~12,除去7和11。
要求每条直线上数字和相等。

请你利用计算机搜索所有可能的填法有多少种。
注意:旋转或镜像后相同的算同一种填法。


 /* 5条线  10个点 1 2 3 4 5 6 8 9 10 12  * 每条线4个数字  * 每个数字加2次  **/public class Main{public static int[] a = {1,2,3,4,5,6,8,9,10,12};public static int count = 0;public static void f(int n){if(n==10){//直到得到最后一个数if(sum_is_equal()){//判断和是否相等,相等即输出count++;}}for(int i=n; i<10; i++){// i n 交换int temp = a[i];a[i] = a[n];a[n] = temp;//下一层递归 得到第 n+1 个数f(n+1);//回溯,恢复现场,i++后与n交换,遍历所有情况int temp1 = a[i];a[i] = a[n];a[n] = temp1;}}private static boolean sum_is_equal(){int temp = a[0] + a[5] + a[6] + a[2];if(temp != a[2] + a[7] + a[8] + a[4])return false;if(temp != a[4] + a[9] + a[5] + a[1])return false;if(temp != a[1] + a[6] + a[7] + a[3])return false;if(temp != a[3] + a[8] + a[9] + a[0])return false;return true;/*0 * *1  5  9  4 * *  6      8 *    7 *23 * **/}public static void main(String[] args){f(0);System.out.println(count/10);}}

0 0
原创粉丝点击