![]()
public class Test {
public static void main(String[] args) {
printjz(8);
System.out.println("======================================");
printjz(9);
}
public static void printjz(int n) {
int max = n * n;
int[][] arr = new int[n][n];
if (n % 2 == 0) {
int s = n;
for (int i = n - 1; i >= n / 2; i--) {
arr[i][n - i - 1] = s * s;
s -= 2;
}
for (int i = 0; i < n / 2; i++) {
//下
for (int j = i + 1; j < n - i; j++) {
int row = n - i - 1;
arr[row][j] = arr[row][j - 1] - 1;
}
//右
for (int j = n - i - 2; j >= i; j--) {
int col = n - i - 1;
arr[j][col] = arr[j + 1][col] - 1;
}
//上
for (int j = n - i - 2; j >= i; j--) {
int row = i;
arr[row][j] = arr[row][j + 1] - 1;
}
//左
for (int j = i + 1; j < n - 1 - i; j++) {
int col = i;
arr[j][col] = arr[j - 1][col] - 1;
}
}
} else {
int s = n;
for (int i = 0; i <= n / 2; i++) {
arr[i][n - i - 1] = s * s;
s -= 2;
}
for (int i = 0; i < (n - 1) / 2; i++) {
//上
for (int j = n - i - 2; j >= i; j--) {
int row = i;
arr[row][j] = arr[row][j + 1] - 1;
}
//左
for (int j = i + 1; j < n - i; j++) {
int col = i;
arr[j][col] = arr[j - 1][col] - 1;
}
//下
for (int j = i + 1; j < n - i; j++) {
int row = n - i - 1;
arr[row][j] = arr[row][j - 1] - 1;
}
//右
for (int j = n - i - 2; j >= i + 1; j--) {
int col = n - i - 1;
arr[j][col] = arr[j + 1][col] - 1;
}
}
}
for (int k = 0; k < arr.length; k++) {
for (int j = 0; j < arr[k].length; j++) {
System.out.print(arr[k][j] + "\t");
if (j == arr[k].length - 1) {
System.out.println("\n");
}
}
}
}
public static void printNum(int n) {
int max = n * n;
int arr[][] = new int[n][n];
int circle = 2, row = n / 2, col = n / 2;
if (n % 2 == 0) {
} else {
}
arr[row][col] = 1;
int num = 1;
for (int i = n / 2; i > 0; i--) {
//向右移动一个
num++;
col++;
arr[row][col] = num;
//
for (int j = 0; j < circle - 1; j++) {
num++;
//向下移动一个
row++;
arr[row][col] = num;
}
for (int j = 0; j < circle; j++) {
num++;
//向左移动
col--;
arr[row][col] = num;
}
for (int j = 0; j < circle; j++) {
num++;
//向上移动
row--;
arr[row][col] = num;
}
for (int j = 0; j < circle; j++) {
num++;
//向右移动
col++;
arr[row][col] = num;
}
circle += 2;
}
for (int k = 0; k < arr.length; k++) {
for (int j = 0; j < arr[k].length; j++) {
System.out.print(arr[k][j] + "\t");
if (j == arr[k].length - 1) {
System.out.println("\n");
}
}
}
}
}