1. 程式人生 > >Java資料結構:N階魔方陣

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);
	}
}