这里用暴力,如果有其他做法,欢迎评论!!!
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n; //边长
int a[35][35]; //大小(35×35)
int cnt=0;
int i,j;
for(i=0;i<(n+1)/2;i++){
for(j=i;j<n-i;j++) a[i][j]=++cnt;
for(j=i+1;j<n-i;j++) a[j][n-i-1]=++cnt;
for(j=n-i-2;j>i;j--) a[n-i-1][j]=++cnt;
for(j=n-i-1;j>=i+1;j--) a[j][i]=++cnt;
} //暴力
for(i=0;i<n;i++){
for(j=0;j<n;j++) cout<<setw(3)<<a[i][j];
cout<<'\n'; //输出
}
return 0;
}