import java.util.Scanner;

public class SpiralMatrix {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个整数 n:");
        int n = scanner.nextInt();
        int[][] matrix = generateMatrix(n);
        System.out.println("生成的螺旋形填充方阵为:");
        printMatrix(matrix);
    }

    public static int[][] generateMatrix(int n) {
        int[][] matrix = new int[n][n];
        int num = 1;
        int top = 0, bottom = n - 1, left = 0, right = n - 1;

        while (num <= n * n) {
            // 从左到右填充
            for (int i = left; i <= right; i++) {
                matrix[top][i] = num++;
            }
            top++;

            // 从上到下填充
            for (int i = top; i <= bottom; i++) {
                matrix[i][right] = num++;
            }
            right--;

            // 从右到左填充
            for (int i = right; i >= left; i--) {
                matrix[bottom][i] = num++;
            }
            bottom--;

            // 从下到上填充
            for (int i = bottom; i >= top; i--) {
                matrix[i][left] = num++;
            }
            left++;
        }

        return matrix;
    }

    public static void printMatrix(int[][] matrix) {
        for (int[] row : matrix) {
            for (int num : row) {
                System.out.printf("%2d ", num);
            }
            System.out.println();
        }
    }
}

运行结果示例:

请输入一个整数 n:4
生成的螺旋形填充方阵为:
 1  2  3  4 
12 13 14  5 
11 16 15  6 
10  9  8  7 

原文地址: https://www.cveoy.top/t/topic/pkOp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录