#include<iostream>
using namespace std;
int main(){
int n,x,y;
cin>>n;
int a[n][n]={0};
a[0][(n-1)/2]=1;
x = 0;
y = (n-1)/2;
for (int i=2;i<=n*n;i++){
if (x==0&&y!=n-1){
//第一行但不是最后一列
x=n-1;
y=y+1;
a[x][y]=i;
}
else if (x==0&&y==n-1){
//第一行最后一列
x=x+1;
a[x][y]=i;
}
else if (y==n-1&&x!=0){
//最后一列但不是第一行
y=0;
x=x-1;
a[x][y]=i;
}
else {
if(a[x-1][y+1]==0){
x=x-1;
y=y+1;
a[x][y]=i;
}
else{
x=x+1;
a[x][y]=i;
}
}
}
for (int i=0;i<n;i++){
for (int j=0;j<n;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
感觉从某一项开始就出错了,但是自己检查不出来 > x <