蓝桥杯官网填空题(四阶幻方)

文章讨论了如何通过递归和DFS计算给定条件下的四阶幻方变种数量,主要关注编程实现和算法策略。
摘要由CSDN通过智能技术生成

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

把  1 ~  16 的数字填入  4×4 的方格中,使得行、列以及两个对角线的和都相等,满足这样的特征时称为:四阶幻方。

四阶幻方可能有很多方案。如果固定左上角为  1,请计算一共有多少种方案。

比如:

1 2 15 16 
12 14 3 5 
13 7 10 4 
8 11 6 9

以及:

1 12 13 8 
2 14 7 11 
15 3 10 6 
16 5 4 9

就可以算为两种不同的方案。

运行限制

public class main {
    static int[] a=new int[]{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    static int[] biaoji=new int[]{0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    static int ans=0;
    static int a1=0;
    public static void main(String[] args) {
        dfs(1);
        System.out.println(ans);
    }
    public static void dfs(int n){
        //四行
        if(n==4){
            a1=a[0]+a[1]+a[2]+a[3];
        }
        if(n==8&&a1!=a[4]+a[5]+a[6]+a[7]){
            return;
        }
        if(n==12&&a1!=a[8]+a[9]+a[10]+a[11]){
            return;
        }
        if(n==16&&a1!=a[12]+a[13]+a[14]+a[15]){
            return;
        }

        //四列
        if(n==13&&a1!=a[0]+a[4]+a[8]+a[12]){
            return;
        }
        if(n==14&&a1!=a[1]+a[5]+a[9]+a[13]){
            return;
        }
        if(n==15&&a1!=a[2]+a[6]+a[10]+a[14]){
            return;
        }
        if(n==16&&a1!=a[3]+a[7]+a[11]+a[15]){
            return;
        }

        //两对角线
        if(n==13&&a1!=a[3]+a[6]+a[9]+a[12]){
            return;
        }
        if(n==16&&a1!=a[0]+a[5]+a[10]+a[15]){
            return;
        }

        if(n==16){
            ans++;
            return;
        }

        if(a[n]!=0){
            dfs(n+1);
        }
        for(int i=2;i<=16;i++){
            if(a[n]==0&&biaoji[i]==0){
                a[n]=i;
                biaoji[i]=1;
                dfs(n+1);
                a[n]=0;
                biaoji[i]=0;
            }
        }
    }
}

    • 最大运行时间:1s
    • 最大运行内存: 128M
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值