编程实现如下所示内螺旋方阵。
如给定任意值n,比如输入4和3分别输出如下:
16 15 14 13 9 8 7
5 4 3 12 2 1 6
6 1 2 11 3 4 5
7 8 9 10
package com.wrx.Algorithmpreparation.test;
/**
* ClassName: test05
* Package: com.wrx.Algorithmpreparation.test
* Description:
* //编程实现如下所示内螺旋方阵。
* //如给定任意值n,比如输入4和3分别输出如下:
* //16 15 14 13 9 8 7
* //5 4 3 12 2 1 6
* //6 1 2 11 3 4 5
* //7 8 9 10
* auther: Len
* CreatTime: 2023-04-02-15:34
*/
import java.util.Scanner;
public class test05 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入方阵的大小: ");
int n = input.nextInt();
int[][] matrix = new int[n][n];
int num = n * n;
int row = 0, col = 0;
// 循环次数为 n/2,每次填充四条边
for (int i = 0; i < n / 2; i++) {
// 向右
for (int j = col; j < n - i; j++) {
matrix[row][j] = num--;
}
// 向下
for (int j = row + 1; j < n - i; j++) {
matrix[j][n - i - 1] = num--;
}
// 向左
for (int j = n - i - 2; j >= i; j--) {
matrix[n - i - 1][j] = num--;
}
// 向上
for (int j = n - i - 2; j > i; j--) {
matrix[j][i] = num--;
}
row++;
col++;
}
// 处理奇数情况下中心的元素
if (n % 2 == 1) {
matrix[n / 2][n / 2] = num;
}
// 输出结果
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.printf("%2d ", matrix[i][j]);
}
System.out.println();
}
}
}