Java 生成螺旋矩阵:代码示例和详解

本文提供一个完整的 Java 代码示例,展示如何生成一个以 1 到 nxn 螺旋形填充的方阵。代码逻辑清晰易懂,并附带运行结果解释,助你深入理解螺旋矩阵生成算法。

代码实现

public class SpiralMatrix {
    public static void main(String[] args) {
        int n = 4;
        int[][] matrix = generateMatrix(n);
        printMatrix(matrix);
    }
    
    public static int[][] generateMatrix(int n) {
        int[][] matrix = new int[n][n];
        int num = 1;
        int startRow = 0, endRow = n - 1;
        int startCol = 0, endCol = n - 1;
        
        while (startRow <= endRow && startCol <= endCol) {
            // Fill top row
            for (int i = startCol; i <= endCol; i++) {
                matrix[startRow][i] = num++;
            }
            startRow++;
            
            // Fill right column
            for (int i = startRow; i <= endRow; i++) {
                matrix[i][endCol] = num++;
            }
            endCol--;
            
            // Fill bottom row
            if (startRow <= endRow) {
                for (int i = endCol; i >= startCol; i--) {
                    matrix[endRow][i] = num++;
                }
                endRow--;
            }
            
            // Fill left column
            if (startCol <= endCol) {
                for (int i = endRow; i >= startRow; i--) {
                    matrix[i][startCol] = num++;
                }
                startCol++;
            }
        }
        
        return matrix;
    }
    
    public static void printMatrix(int[][] matrix) {
        for (int[] row : matrix) {
            for (int num : row) {
                System.out.print(num + " ");
            }
            System.out.println();
        }
    }
}

运行结果

1 2 3 4 
12 13 14 5 
11 16 15 6 
10 9 8 7 

解释

该代码通过四个循环分别填充矩阵的顶部、右侧、底部和左侧,并不断缩小填充范围,最终完成螺旋形填充。

  • startRowendRow 分别表示当前填充范围的起始行和结束行。
  • startColendCol 分别表示当前填充范围的起始列和结束列。
  • num 表示当前填充的数字。

方阵的维度为 4x4,按照螺旋形填充的顺序,数字从 1 到 16 依次填充进去。

总结

通过以上代码示例和解释,你应该能够理解 Java 如何生成螺旋矩阵。你可以根据需要修改代码中的 n 值来生成不同维度的螺旋矩阵。


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

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