一、题目
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 n=5的回型矩阵 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 n=6的回型矩阵 1 2 3 4 5 6 20 21 22 23 24 7 19 32 33 34 25 8 18 31 36 35 26 9 17 30 29 28 27 10
16 15 14 13 12 11
二、思路
矩阵由n/2圈组成,一圈是由四条边组成,
第一条边横向(i=k不变,j++),第二条边竖向(j=n-k-1不变,i++),第三条边(i=n-k-1不变,j--),第四条边(j=k不变,i--)
如果n为奇数,则最后A[n/2][n/2]为最后一个元素
三、代码
import java.util.Scanner;
public class Snake {
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
System.out.println("Please enter n:");
int n=sc.nextInt();
printJZ(n);
}
public static void printJZ(int n){
int [][]A=new int[n][n];
int t=1;
int i=0;
int j=0;
for(int k=0;k<n/2;k++){//k代表第几圈
for(i=k,j=k;j<n-k-1;j++){//第一条边
A[i][j]=t++;
}
for(i=k,j=n-k-1;i<n-k-1;i++){//第二条边
A[i][j]=t++;
}
for(i=n-k-1,j=n-k-1;j>k;j--){//第三条边
A[i][j]=t++;
}
for(i=n-k-1,j=k;i>k;i--){//第四条边
A[i][j]=t++;
}
}
if(n%2==1){
A[n/2][n/2]=t;
}
for(i=0;i<n;i++){
for (j=0;j<n;j++) {
System.out.print(A[i][j]+" ");
}
System.out.println();
}
}
}
四、验证