回形数格式方阵的实现 从键盘输入一个整数(1~20) 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。 例如: 输入数字2,则程序输出: 1 2 4 3 输入数字3,则程序输出: 1 2 3 8 9 4 7 6 5 输入数字4, 则程序输出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
public static void main(String[] args) {
Scanner scan =new Scanner(System.in);//Scanner的实例化
System.out.println("请输入矩阵的长度:(1-20)");
int len = scan.nextInt();
int k=1; //表示行走的方向
int[][] arr=new int[len][len];//初始化符合条件的数组
int i=0,j=0;
for(int s= 1;s<=len*len;s++){
if(k==1){ //向右
if(j<len&&arr[i][j]==0){
arr[i][j++]=s;
}else{
k=2;
i++;
j--;
s--;
}
}else if(k==2){ //向下
if(i<len&&arr[i][j]==0){
arr[i++][j]=s;
}else{
k=3;
i--;
j--;
s--;
}
}else if(k==3){ //向左
if(j>=0&&arr[i][j]==0){
arr[i][j--]=s;
}else{
k=4;
i--;
j++;
s--;
}
}else if(k==4){ //向上
if(i>=0&&arr[i][j]==0){
arr[i--][j]=s;
}else{
k=1;
i++;
j++;
s--;
}
}
}
for(int m=0;m< arr.length;m++){
for(int n=0;n<arr[m].length;n++){
System.out.print(arr[m][n]+"\t");
}
System.out.println();
}
时间复杂度O(n)
空间复杂度O(1)