• 数据结构(java语言描述)——串数组(n阶魔方)


    n阶魔方的思想:

    定义一个n*n阶数组,组委n阶魔方的数据结构,将1--n*n的数字填入其中:

    1:首先填写第一行,中间列的位置为1;

    2:下一个数填写在当前位置的上一行,下一列;若果存在一下情况则改正:

      1,当前行为第一行,则则下一个数由上一行改为最后一行,列仍为下一列;

      2,当前列为最后一列,则下一个数由下一列改为第一列,行仍为上一行;

      3,若果当前数的上一行,下一列的位置有数字,则改为下一行,相同列;

    重复以上过程直到n*n个数字填写完毕。

    规范代码:

    package chuanshu;
    import java.util.Scanner;
    public class mofang {
    public static void nmofang(int n){
    int [][] a=new int[n][n];
    int i=0,j=n/2;
    //a[i][j]=1;
    for(int k=1;k<=n*n;k++){
    a[i][j]=k;
    if(k%n==0){
    i=(i+1)%n;
    }else{
    i=(i-1+n)%n;
    j=(j+1)%n;
    }
    }
    for(i=0;i<a.length;i++){
    for(j=0;j<a.length;j++){
    System.out.print(a[i][j]+" ");
    }
    System.out.println();
    }
    }
    public static void main(String[] args){
    System.out.println("请输入要生成的魔方阶数:");
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    nmofang(n);
    }
    }

    结果:

    8 1 6
    3 5 7
    4 9 2

    不明白k%n的含义;

    自己理解的代码:

    package chuanshu;

    import java.util.Scanner;

    public class nmo {
    public static void mofang(int n){
    int [][] a=new int[n+1][n+1];
    int i,j;
    int k;
    i=0;j=n/2;
    while(i<n&&j<n){
    for(k=1;k<=n*n;k++){
    a[i][j]=k;
    if(i==0&&j==n-1){ i++;j=j;
    }
    else if(j==n-1){
    j=0;
    i=i-1;
    }
    else if(i==0){ i=n-1;
    j=j+1;
    }
    else if(a[--i][++j]!=0){
    i=i+2;
    j=j-1;
    }else{
    i--;
    j++;
    }
    }
    }
    for(i=0;i<n;i++){
    for(j=0;j<n;j++){
    System.out.print(a[i][j]+" ");
    }
    System.out.println();
    }
    }
    public static void main(String[] args){
    Scanner sc=new Scanner(System.in);
    System.out.println("请输入要计算的魔方阶数:");
    int n=sc.nextInt();
    mofang(n);
    }
    }

    结果为:

    7 1 5
    3 0 6
    4 8 2

    不明白为什么4(2,0)后面直接跳到了(0,2),自己调试发现执行的i--;j++;按理说应该是:2-1=1;0+1=1,才对。

  • 相关阅读:
    SolrCloud阶段总结
    Solr总结
    机器学习算法与Python实践之(六)二分k均值聚类
    机器学习问题方法总结
    浅谈Kmeans聚类
    AVL树的算法思路整理
    Solr4.6从数据库导数据的步骤
    红黑树
    浅谈 Adaboost 算法
    POJ 1836 Alignment
  • 原文地址:https://www.cnblogs.com/xleer/p/5334927.html
Copyright © 2020-2023  润新知