Java 代码生成螺旋矩阵:算法实现与示例
Java 代码生成螺旋矩阵:算法实现与示例
问题描述: 给定一个整数 n,生成一个以 1 到 n x n 的螺旋形填充的方阵。
算法思路:
- 初始化一个 n x n 的矩阵,并定义四个边界变量:rowStart、rowEnd、colStart、colEnd,分别代表矩阵的行起始位置、行结束位置、列起始位置和列结束位置。
- 从左到右填充矩阵的第一行。
- 从上到下填充矩阵的最后一列。
- 从右到左填充矩阵的最后一行(如果还有)。
- 从下到上填充矩阵的第一列(如果还有)。
- 更新边界变量,并重复步骤 2 到 5,直到所有元素都被填充。
Java 代码:
import java.util.Scanner;
public class SpiralMatrix {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print('请输入一个整数 n:');
int n = input.nextInt();
input.close();
int[][] matrix = generateSpiralMatrix(n);
System.out.println('生成的螺旋矩阵为:');
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + '\t');
}
System.out.println();
}
}
public static int[][] generateSpiralMatrix(int n) {
int[][] matrix = new int[n][n];
int num = 1;
int rowStart = 0, rowEnd = n - 1;
int colStart = 0, colEnd = n - 1;
while (rowStart <= rowEnd && colStart <= colEnd) {
// 从左到右填充
for (int i = colStart; i <= colEnd; i++) {
matrix[rowStart][i] = num++;
}
rowStart++;
// 从上到下填充
for (int i = rowStart; i <= rowEnd; i++) {
matrix[i][colEnd] = num++;
}
colEnd--;
// 从右到左填充
if (rowStart <= rowEnd) {
for (int i = colEnd; i >= colStart; i--) {
matrix[rowEnd][i] = num++;
}
rowEnd--;
}
// 从下到上填充
if (colStart <= colEnd) {
for (int i = rowEnd; i >= rowStart; i--) {
matrix[i][colStart] = num++;
}
colStart++;
}
}
return matrix;
}
}
运行结果示例:
请输入一个整数 n:4
生成的螺旋矩阵为:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
总结: 该代码通过循环和边界条件的判断,实现了螺旋矩阵的生成。通过改变输入的整数 n,可以生成不同大小的螺旋矩阵。该算法简洁高效,易于理解和应用。
原文地址: https://www.cveoy.top/t/topic/pkOl 著作权归作者所有。请勿转载和采集!