- 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");
- }
- }
- }
- }
- }
来源: http://www.bubuko.com/infodetail-2927189.html