求助

P2615 [NOIP2015 提高组] 神奇的幻方

@[麒乐无穷](/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


|