找到规律直接模拟就行
#include<iostream>
#include<iomanip>
using namespace std;
int a[100][100];
int main()
{
int n,cnt=1;
cin>>n;
int t=n-1;
for(int i=1;i<=n;i++)
{
a[1][i]=cnt;
cnt++;
}
int x=1,y=n;
while(cnt<n*n)
{
for(int j=1;j<=t;j++)
{
x++;
a[x][y]=cnt;
cnt++;
}
for(int j=1;j<=t;j++)
{
y--;
a[x][y]=cnt;
cnt++;
}
t--;
for(int j=1;j<=t;j++)
{
x--;
a[x][y]=cnt;
cnt++;
}
for(int j=1;j<=t;j++)
{
y++;
a[x][y]=cnt;
cnt++;
}
t--;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cout<<setw(3)<<a[i][j];
}
cout<<endl;
}
return 0;
}