#include<iostream>
#include<cstdio>
using namespace std;
const int N=40;
int n,ans[N][N];
struct node
{
int x,y;
} num[N*N];
int main()
{
scanf("%d",&n);
num[1].x=1;
num[1].y=n/2+1;
ans[1][n/2+1]=1;
for(int i=2;i<=n*n;i++)
{
if(num[i-1].x==1)
{
if(num[i-1].y==n)
{
num[i].x=num[i-1].x+1;
num[i].y=num[i-1].y;
ans[num[i].x][num[i].y]=i;
}
else
{
num[i].x=n;
num[i].y=num[i-1].y+1;
ans[num[i].x][num[i].y]=i;
}
continue;
}
if(num[i-1].y==n)
{
num[i].x=num[i-1].x-1;
num[i].y=1;
ans[num[i].x][num[i].y]=i;
continue;
}
if(ans[num[i-1].x-1][num[i-1].y+1]==0)
{
num[i].x=num[i-1].x-1;
num[i].y=num[i-1].y+1;
ans[num[i].x][num[i].y]=i;
}
else
{
num[i].x=num[i-1].x+1;
num[i].y=num[i-1].y;
ans[num[i].x][num[i].y]=i;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
printf("%d ",ans[i][j]);
printf("\n");
}
return 0;
}
我错哪了?!!!





