Java 生成螺旋矩阵:代码示例和详解
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
解释
该代码通过四个循环分别填充矩阵的顶部、右侧、底部和左侧,并不断缩小填充范围,最终完成螺旋形填充。
startRow和endRow分别表示当前填充范围的起始行和结束行。startCol和endCol分别表示当前填充范围的起始列和结束列。num表示当前填充的数字。
方阵的维度为 4x4,按照螺旋形填充的顺序,数字从 1 到 16 依次填充进去。
总结
通过以上代码示例和解释,你应该能够理解 Java 如何生成螺旋矩阵。你可以根据需要修改代码中的 n 值来生成不同维度的螺旋矩阵。
原文地址: https://www.cveoy.top/t/topic/pkNW 著作权归作者所有。请勿转载和采集!