Java数据结构:N阶魔方阵

思路:先随便放置1,下一个元素放在1的上一行,下一列,其实没必要非按照这个方法,可以是下一行下一列,都是一行一行的竖直加一或者减一

import java.util.Scanner;

public class n阶魔方阵 {
		private static void Magic(int n) {
			int mat[][] = new int[n][n];
			int i = 0, j = n / 2;	//将1放在第一行中间列
			for (int k = 1; k <= n * n; k++) {	//对n*n个空位置的魔方填入数据
				mat[i][j] = k;
				if (k % n == 0) {		//下一位有数字,每三次产生一次下一位有数字
					i = (i + 1) % n;	//下一位在下一行
				} else {		
					i = (i - 1 + n) % n;	//在没到边界时,每次i减一,+n为了防止出现负数
					j = (j + 1) % n;		//每n个数换一列
				}
			}
			for (i = 0; i < mat.length; i++) {		//输出魔方阵
				for (j = 0; j < mat[i].length; j++) {
					System.out.print(mat[i][j] + "\t");
				}
				System.out.println();
			}
		}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		Magic(n);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42192693/article/details/82763073