直接按照它说的做就OK了
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,k;
cin>>n;
int a[n][n]={},r[n*n],c[n*n];
r[0]=0;
c[0]=(n-1)/2;
a[r[0]][c[0]]=1;
for(k=2;k<=n*n;k++)
{
if(r[k-2]==0&&c[k-2]!=n-1)
{
r[k-1]=n-1;
c[k-1]=c[k-2]+1;
a[r[k-1]][c[k-1]]=k;
}
if(r[k-2]!=0&&c[k-2]==n-1)
{
c[k-1]=0;
r[k-1]=r[k-2]-1;
a[r[k-1]][c[k-1]]=k;
}
if(r[k-2]==0&&c[k-2]==n-1)
{
r[k-1]=r[k-2]+1;
c[k-1]=c[k-2];
a[r[k-1]][c[k-1]]=k;
}
if(r[k-2]!=0&&c[k-2]!=n-1)
{
if(!a[r[k-2]-1][c[k-2]+1])
{
r[k-1]=r[k-2]-1;
c[k-1]=c[k-2]+1;
a[r[k-1]][c[k-1]]=k;
}
else
{
r[k-1]=r[k-2]+1;
c[k-1]=c[k-2];
a[r[k-1]][c[k-1]]=k;
}
}
}
for(int i=0;i<=n-1;i++)
{
for(int j=0;j<=n-1;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
因为作者非常糟糕,所以若有不足请在评论区中指出。