#include<bits/stdc++.h>
using namespace std;
int a[40][40];
int main()
{
int n,x,y;
cin>>n;
int k=floor(n/2)+1;
a[1][k]=1;
x=1,y=k;
for(int i=2;i<=n*n;i++){
if(x==1 && y!=n) a[n][y+1]=i,x=n,y+=1;
if(y==n && x!=1) a[x-1][1]=i,x-=1,y=1;
if(x==1 && y==n) a[x+1][y]=i,x+=1;
if(x!=1 && y!=n) {
if(a[x-1][y+1]==0) a[x-1][y+1]=i,x-=1,y+=1;
else a[x+1][y]=i,x+=1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++) cout<<a[i][j]<<" ";
cout<<endl;}
return 0;
}
问题:在输入3时,幻方中总是出现多个2,但按照程序一个数最多被加入数组一次