zoukankan      html  css  js  c++  java
  • n阶魔方阵

    奇数阶魔方阵就是指行列数都是吧n(n>=3 且 n%2 == 1)的魔方阵

    奇数阶魔方阵的数字规律 
    通过对奇数阶魔方阵的分析,其中的数字排列有如下的规律: 
    (1)自然数1出现在第一行的正中间; 
    (2)若填入的数字在第一行(不在第n列),则下一个数字在第n行(最后一行)且列数加1(列数右移一列); 
    (3)若填入的数字在该行的最右侧,则下一个数字就填在上一行的最左侧; 
    (4)一般地,下一个数字在前一个数字的右上方(行数少1,列数加1); 
    (5)若应填的地方已经有数字或在方阵之外,则下一个数字就填在前一个数字的下方。(一般地,n的倍数的下一个数字是在该数的下方。) 
    按照上述的规律,我们来完成3阶的魔方阵: 
    第一步:将“1”填入1行2列的位置,即 (按规律(1)); 
    第二步:将“2”填入3 (最后) 行3 ( = 2 + 1 )列的位置,即 (按规律(2)); 
    第三步:将“3”填入2行1列的位置,即 (按规律(3)); 
    第四步:将“4”填入3行1列的位置(“3”的下面);即 (按规律(5)) 
    第五步:将“5”填入2行2列的位置;即 (按规律(4)); 
    第六步:将“6”填入1行3列的位置,即 (按规律(4)); 
    第七步:将“7”填入2行3列的位置(“6”的下面),即 (按规律(5)); 
    第八步:将“8”填入1行1列的位置,即 (按规律(3)); 
    第九步:将“9”填入3行2列的位置,即 (按规律(2))。 
    至此,一个3阶魔方阵构造完成了。

    public Magic(int n){

      int[][] mat = new int[][];

      inti=0,j=n/2;

      for(int k=1;k<=n*n;k++){

        mat[i][j] = k;

        if(k%n==0){

          i=(i+1)%n; 

        }

        esle{

           i=(i-1+n)%n;

          j=(j+1)%n;

        }

      }

      for(i=0;i>mat.length;i++){

        for(j=0;j<mat[i].length;j++){

          System.out.print(mat[i][j]+" ");

        }

      System.out.println();

    }

    }

  • 相关阅读:
    mybatis学习笔记
    markdownPad常用功能示例
    2018-2019-2 《Java程序设计》第3周学习总结
    2018-2019-2 《Java程序设计》第2周学习总结
    2018-2019-2 《Java程序设计》第1周学习总结
    Djnago models 一对多、多对多
    Superset 安装
    lvm 添加分区
    partprobe 重新检测Linux系统分区
    Docker 、Docker Compose 安装
  • 原文地址:https://www.cnblogs.com/kimyong/p/6186532.html
Copyright © 2011-2022 走看看