(1)螺旋方阵概念:以n=5为例 从1开始的自然数由方阵的最外圈向内螺旋式地顺序排列
1 2 3 4 5 1 2 3 4 5
16 6 17 18 19 16 17 18 19 6
15 7 + 24 20 + 25 = 15 16 25 20 7
14 8 23 22 21 14 23 22 21 8
13 12 11 10 9 13 12 11 10 9
(2)Java实现
import java.io.IOException;
import java.util.Scanner;
public class SpiralMatrix {
public static int[][] spiralMatrix(int n){
int[][] matrix = new int[n][n];//新建n*n的矩阵,值默认为0
int circle = n/2;//表示矩阵的层数,当n为偶数是n/2,当n为奇数是n/2+1
int i = 0,j = 0;//matrix[i][j]表示每层矩阵开始的位置
int count = 1;
int rightDownExit = n-1;//向下,向右递增的结束点
int leftUpExit = 0;//向左,向上递增的结束点
while(circle > 0){
while(j < rightDownExit){
matrix[i][j] = count++;
j++;
}
while(i < rightDownExit){
matrix[i][j] = count++;
i++;
}
while(j > leftUpExit){
matrix[i][j] = count++;
j--;
}
while(i > leftUpExit){
matrix[i][j] = count++;
i--;
}
i++;
j++;
rightDownExit--;
leftUpExit++;
circle--;
}
if(n%2 == 1){//当n为奇数时,多加一层
if(matrix[i][j] == 0){
matrix[i][j] = count;
}
}
return matrix;
}
public static void main(String[] args) throws IOException{
System.out.print("请输入螺旋矩阵层数:");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
System.out.println("螺旋矩阵是:");
int[][] matrix = spiralMatrix(n);
for(int i = 0;i < n;i++){
for(int j = 0;j < n;j++){
System.out.print(matrix[i][j] + " ");
}
System.out.println("");
}
}
}