@[麒乐无穷](/user/125227)
应该可以A了
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,ans[40][40];
struct FLAG
{
int i;
int j;
};
FLAG flag[1600];
int main()
{
cin>>n;
for(int k=1;k<=n*n;k++)
{
if(k==1)
{
ans[1][(n+1)/2]=k;
flag[k].i=1;
flag[k].j=(n+1)/2;
}
else if(flag[k-1].i==1&&flag[k-1].j!=n)
{
ans[n][flag[k-1].j+1]=k;
flag[k].i=n;
flag[k].j=flag[k-1].j+1;
}
else if(flag[k-1].i!=1&&flag[k-1].j==n)
{
ans[flag[k-1].i-1][1]=k;//把ans[flag[k-1].j-1][1]=k;改成ans[flag[k-1].i-1][1]=k;即可
flag[k].i=flag[k-1].i-1;
flag[k].j=1;
}
else if(flag[k-1].i==1&&flag[k-1].j==n)
{
ans[flag[k-1].i+1][flag[k-1].j]=k;
flag[k].i=flag[k-1].i+1;
flag[k].j=flag[k-1].j;
}
else
{
if(ans[flag[k-1].i-1][flag[k-1].j+1]==0)
{
ans[flag[k-1].i-1][flag[k-1].j+1]=k;
flag[k].i=flag[k-1].i-1;
flag[k].j=flag[k-1].j+1;
}
else
{
ans[flag[k-1].i+1][flag[k-1].j]=k;
flag[k].i=flag[k-1].i+1;
flag[k].j=flag[k-1].j;
}
}
}
for(int ii=1;ii<=n;ii++)
{
for(int jj=1;jj<=n;jj++)
{
cout<<ans[ii][jj]<<' ';
}
cout<<endl;
}
}
```
by Lazy_Labs @ 2021-07-29 22:13:03
@[a929666](/user/376137) 感谢,好人一生平安![](//图.tk/4)
by 麟落 @ 2021-07-31 08:34:07