/**
* 在java中数组初始化为0,C需要初始化赋值;
* 先定一个其实的坐标,这里以arr[0][0]开始
* 通过while循环先判断,(数组未越界)再移动
*/
class Main {
private static final Scanner scanner=new Scanner(System.in);
public static void main(String[] args) {
int n=scanner.nextInt();
int[][] arr=new int[n][n];
//x,y用来记录数组的坐标 tot用来记录步数
int x,y,tot=0;
//初始坐标的定位
arr[x=0][y=0]=tot=1;
while(tot<n*n){
while(y+1<n&&arr[x][y+1]==0) arr[x][++y]=tot++;
while(x+1<n&&arr[x+1][y]==0) arr[++x][y]=tot++;
while(y-1>=0&&arr[x][y-1]==0) arr[x][--y]=tot++;
while(x-1>=0&&arr[x-1][y]==0) arr[--x][y]=tot++;
}
for(x=0;x<n;x++){
for(y=0;y<n;y++) System.out.printf("%-3d ",arr[x][y]);
System.out.println();
}
}
}
3
| 1 | 2 | 3
| 8 | 9 | 4
| 7 | 6 | 5