• java实现第六届蓝桥杯五星填数


    五星填数

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

    如图就是恰当的填法。

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

    请提交表示方案数目的整数,不要填写任何其它内容。

    答案:12

    在这里插入图片描述

    public class Main {
        public static int count = 0;
        
        public void swap(int[] A, int i, int j) {
            int temp = A[i];
            A[i] = A[j];
            A[j] = temp;
        }
        
        public void check(int[] A) {
            int sum1 = A[0] + A[2] + A[5] + A[8];
            int sum2 = A[0] + A[3] + A[6] + A[9];
            int sum3 = A[1] + A[2] + A[3] + A[4];
            int sum4 = A[1] + A[5] + A[7] + A[9];
            int sum5 = A[4] + A[6] + A[7] + A[8];
            if(sum1 == sum2 && sum1 == sum3 && sum1 == sum4 && sum1 == sum5) {
                count++;
            } else
                return;
        }
        
        public void dfs(int[] A, int step) {
            if(step == A.length) {
                check(A);
                return;
            } else {
                for(int i = step;i < A.length;i++) {
                    swap(A, i, step);
                    dfs(A, step + 1);
                    swap(A, i, step);
                }
            }
        }
        
        public static void main(String[] args) {
            Main test = new Main();
            int[] A = {1,2,3,4,5,6,8,9,10,12};
            test.dfs(A, 0);
            System.out.println(count / 10);
        }
    }
    
  • 相关阅读:
    进度条2
    VW
    SET和MAP
    解构赋值、
    Symbol
    箭头函数
    正则的补充
    java 面向对象(三十五):泛型在继承上的体现
    java 面向对象(三十六):泛型五 通配符
    java IO流 (一) File类的使用
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077015.html
Copyright © 2020-2023  润新知