Java資料結構:N階魔方陣
阿新 • • 發佈:2019-01-10
思路:先隨便放置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); } }