#include <stdio.h>
#include <memory.h>
int main(){
int n;
scanf("%d",&n);
int i, c = 0, r = 0,num = 0,cnt = n/2;
int a[n][n];
memset(a,0,sizeof(a)); //初始化
while(cnt--){
for (i=r; i<n-c; i++) //→
a[r][i] = ++num;
r++;
for (i=r; i<n-c; i++) //↓
a[i][n-c-1] = ++num;
c++;
for (i=c-1; i<n-c; i++) //←
a[n-r][n-i-2] = ++num;
for (i=r; i<n-r; i++) //↑
a[n-1-i][c-1] = ++num;
}
if(n%2!=0) //如果是奇数,填上正中间那个数
a[n/2][n/2] = ++num;
for (int i =0; i<n; i++){ //遍历输出
for (int j =0; j<n; j++)
printf("%3d",a[i][j]);
printf("\n");
}
return 0;
}
/**************************************************************
Problem: 1208
User: admin
Language: C
Result: Accepted
Time:10 ms
Memory:1144 kb
****************************************************************/