• 反幻方


    我国古籍很早就记载着

    2 9 4
    7 5 3
    6 1 8

    这是一个三阶幻方。每行每列以及对角线上的数字相加都相等。

    下面考虑一个相反的问题。
    可不可以用 1~9 的数字填入九宫格。
    使得:每行每列每个对角线上的数字和都互不相等呢?


    这应该能做到。
    比如:
    9 1 2
    8 4 3
    7 5 6

    你的任务是搜索所有的三阶反幻方。并统计出一共有多少种。
    旋转或镜像算同一种。

    比如:
    9 1 2
    8 4 3
    7 5 6

    7 8 9
    5 4 1
    6 3 2

    2 1 9
    3 4 8
    6 5 7

    等都算作同一种情况。

    请提交三阶反幻方一共多少种。这是一个整数,不要填写任何多余内容。
    结果:3120

     全排列,在判断符不符合条件

     1 import java.util.Arrays;
     2 
     3 
     4 public class Main {
     5     static int[][] a;
     6     static boolean[] b;
     7     static int sum;
     8     public static void main(String[] args) {
     9         a = new int[4][4];
    10         b = new boolean[10];
    11         f(1);
    12         System.out.println(sum/8);
    13     }
    14     static void f(int i){
    15         if(i==10){
    16             if(f1()){
    17                 sum++;
    18             }
    19         }
    20         for(int j=1;j<=9;j++){
    21             if(!b[j]){
    22                 b[j] = true;
    23                 a[(i-1)/3+1][(i-1)%3+1] = j;
    24                 f(i+1);
    25                 b[j] = false;
    26             }
    27         }
    28     }
    29     /*
    30      *  9 1 2
    31         8 4 3
    32         7 5 6
    33      * */
    34     static boolean f1(){
    35         
    36         int[] c = new int[9];
    37         c[1] = a[1][1]+a[1][2]+a[1][3];
    38         c[2] = a[2][1]+a[2][2]+a[2][3];
    39         c[3] = a[3][1]+a[3][2]+a[3][3];
    40         c[4] = a[1][1]+a[2][1]+a[3][1];
    41         c[5] = a[1][2]+a[2][2]+a[3][2];
    42         c[6] = a[1][3]+a[2][3]+a[3][3];
    43         c[7] = a[1][1]+a[2][2]+a[3][3];
    44         c[8] = a[1][3]+a[2][2]+a[3][1];
    45         boolean flag = true;
    46         for(int i=1;i<8;i++){
    47             for(int j=i+1;j<=8;j++){
    48                 if(c[i]==c[j]){
    49                     flag = false;
    50                     break;
    51                 }
    52                 }
    53             if(!flag){
    54                 break;
    55             }
    56         }
    57         return flag;
    58     }
    59     
    60 }
  • 相关阅读:
    Pausing Coyote HTTP/1.1 on http-8080
    网站后台管理中生成首页失败
    Eclipse快捷键集结
    电子商务网站推广10大方法
    Eclipse使用
    注册表中更换桌面背景
    网站卡死,照惯例运行.bat批量处理文件进行重启不起作用
    同时处理html+js+jquery+css的插件安装(Spket&Aptana插件安装)
    JQuery的插件
    Eclipse插件
  • 原文地址:https://www.cnblogs.com/lolybj/p/6883949.html
Copyright © 2020-2023  润新知