某种意义上来说算得上枚举(doge)
我这个应该比较好懂
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int f[45][45];
int main(){
int n;
cin>>n;
int x;
if(n%2!=0){
x=n/2+1;
f[1][x]=1;
}
else{
x=n/2;
f[1][x]=1;
}
int q=1,w=x;
for(int i=2;i<=n*n;i++){
if(q==1 && w!=n){
f[n][w+1]=i;
q=n;w=w+1;
continue;
}
if(q!=1 && w==n){
f[q-1][1]=i;
q=q-1;w=1;
continue;
}
if(q==1 && w==n){
f[q+1][w]=i;
q=q+1;
continue;
}
if(q!=1 && w!=n){
if(f[q-1][w+1]==0){
f[q-1][w+1]=i;
q=q-1;w=w+1;
continue;
}
else{
f[q+1][w]=i;
q=q+1;
continue;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<f[i][j]<<' ';
}
cout<<endl;
}
return 0;
}