JAVA蛇形矩阵
时间: 2025-05-14 18:58:53 浏览: 28
### Java 实现蛇形矩阵
蛇形矩阵是一种特殊的二维数组填充方式,通常按照特定的方向(如顺时针或逆时针)依次填入自然数。对于N阶方阵而言,确实存在N的奇偶性带来的不同处理逻辑[^1]。
下面是一个基于Java语言实现的蛇形矩阵构建方法:
#### 定义螺旋方向枚举类
为了更好地管理四个可能的移动方向——右、下、左、上,定义一个简单的枚举来表示这些方向。
```java
enum Direction {
RIGHT, DOWN, LEFT, UP;
}
```
#### 构建蛇形矩阵的方法
此函数接收整型参数n代表想要创建的方阵大小,并返回一个已按指定模式填充完毕的二维整型数组作为结果。
```java
public static int[][] generateSpiralMatrix(int n) {
int[][] matrix = new int[n][n];
if (n <= 0) return matrix;
// 初始化变量
int num = 1; // 当前要放置到matrix中的数值
int rowBegin = 0, colBegin = 0;
int rowEnd = n - 1, colEnd = n - 1;
while (rowBegin <= rowEnd && colBegin <= colEnd) { // 控制循环条件
for (int j = colBegin; j <= colEnd; ++j) { // 向右走一格
matrix[rowBegin][j] = num++;
}
rowBegin++;
for (int i = rowBegin; i <= rowEnd; ++i) { // 往下行进
matrix[i][colEnd] = num++;
}
colEnd--;
if (rowBegin <= rowEnd) { // 如果还有未遍历行,则向左回退
for (int j = colEnd; j >= colBegin; --j) {
matrix[rowEnd][j] = num++;
}
rowEnd--;
}
if (colBegin <= colEnd) { // 若有剩余列则向上爬升
for (int i = rowEnd; i >= rowBegin; --i) {
matrix[i][colBegin] = num++;
}
colBegin++;
}
}
return matrix;
}
```
上述代码通过控制边界指针`rowBegin`, `colBegin`, `rowEnd`, 和 `colEnd` 来模拟绕着矩形边缘行走的过程,在每次完成一圈之后调整这四个边界的范围直到整个矩阵被完全填充为止。
#### 打印生成的结果矩阵辅助函数
为了让输出更直观易读,这里提供了一个用于打印任意给定二维整形数组的小工具函数。
```java
public static void printMatrix(int[][] matrix){
for (int[] row : matrix) {
System.out.println(Arrays.toString(row));
}
}
```
调用以上两个静态成员即可轻松获得并展示所需的蛇形排列形式的数据结构。
阅读全文
相关推荐
















