/* 打印螺旋矩阵
* 所谓螺旋矩阵,即:
* 比如 N = 3,打印:
* 1 2 3
* 8 9 4
* 7 6 5
*
* N = 4,打印:
* 1 2 3 4
* 12 13 14 5
* 11 16 15 6
* 10 9 8 7
*
*/
import java.util.*;
public class lianxi14{
public static void main(String[] args){
int N = 0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入矩阵大小N的值:");
N = sc.nextInt();
int[][] Matrix = new int[N][N];
setMatrix(Matrix, 0, 0, 1, N);
printMatrix(Matrix);
}
/**************************************************************
* 函数功能:螺旋矩阵赋值
* 参数说明:int[][] A:二维矩阵 int x:矩阵中行坐标
* int y: 矩阵中列坐标 int start:初始值
* int n: 矩阵大小
**************************************************************/
static void setMatrix(int[][] A, int x, int y, int start, int n){
int i = 0;
if(n <= 0)
return;
if(n == 1){
A[x][y] = start;
return;
}
//up
for(i = y; i < y + n - 1; i++)
A[x][i] = start++;
//right
for(i = x; i < x + n - 1; i++)
A[i][y+n-1] = start++;
//down
for(i = y + n - 1; i > y; i--)
A[x+n-1][i] = start++;
//left
for(i = x + n - 1; i > x; i--)
A[i][y] = start++;
setMatrix(A, x+1, y+1, start, n-2);
}
/*
* 函数功能:打印矩阵
*/
static void printMatrix(int[][] A){
int len = A.length;
for(int i = 0; i < len; i++){
for(int j = 0; j < len; j++){
System.out.print(A[i][j]+"\t");
}
System.out.println("");
}
}
}