魔方矩阵的Java版的魔方矩阵算法

Python033

魔方矩阵的Java版的魔方矩阵算法,第1张

/***魔术矩阵,也被称为魔方矩阵。目前魔术矩阵主要有三种结构:N为奇数、N为4的倍数、N为其它偶数(4n+2)。<br/>*其中目前很多数学家都还在研究“N为4的倍数”、“N为其它偶数(4n+2)”,可见它们对于初学者而言太难。<br/>*因此此处演示的代码,仅仅考虑N为奇数的情况。<br/>*此代码作为课件提供给学生参考,在学完数组、循环、判断后练习。<br/>*@authorluo_wenqiang在126点com*@version1.0.0*/classMagicArray{publicstaticvoidmain(String[]args){/*1.把1放在第一行的最中间2.每个数字向右上角填充3.如果往右已经是最大数了,就从最左边重新继续4.如果往上已经是最大数了,就从最下边重新继续5.如果遇到行数的整数倍,则下一个数直接放到该数的下面*//*1.声明一个n*n二维数组2.声明一个int类型的变量记录每个元素递增的值,每次自加即可3.需要一个嵌套循环来填充二维数组3.1.把横向的索引认为x,x=n/23.2.把纵向的所应认为y,y=03.3.在循环中,先把x、y坐标上的值填充,然后计算下一个坐标*/intn=3int[][]array=newint[n][n]intcounter=1//自加的计数器intx=n/2inty=0//二维数组,需要用两层的嵌套循环来完成比较简单for(inti=0i<n*ni++){//根据坐标填充值array[y][x]=counter//计算下一个坐标的位置if(counter%n==0){//如果counter是n的整数倍,下一个坐标是在当前数字的下面y++}else{x++y--if(y<0){//如果y超出范围,把y设置成最大y=n-1}if(x==n){//如果x超出范围,把x设置成最小x=0}}//使用完以后计数器需要自加counter++}for(int[]row:array){for(inti:row){System.out.print(i)System.out.print(\t)}System.out.println()}}}

import java.util.Scanner

public class Matrix {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("请输入n*n数组,n=")

Scanner sc = new Scanner(System.in)

int n = sc.nextInt()

int[][] a = new int[n][n]//定义n*n数组

int result = 0

for(int i=0i<ni++){

for(int j=0j<nj++){

System.out.println("请输入第"+i+"行,第"+j+"列元素:")

a[i][j]=sc.nextInt()

}

result +=a[i][i]

}

System.out.println("对角线元素和为:"+result)

}

}

//进行数组的打印

public static void print(int[][]k){

for(int i=0i<k.lengthi++){

for(int j=0j<k[i].lengthj++){

if(k[i][j]!=0){

System.out.print(k[i][j])

}else{

System.out.print(" ")

}