#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int map[40][40],n,k=1,flag,x,y;
int main()
{
memset(map,0,sizeof(map));
cin>>n;
map[1][(n+1)/2]=1;
while(k<pow(n,2))
{
flag=0;
k++;
if(!flag)
{
for(int i=1;i<n;i++)
{
if(map[1][i]==k-1)
{
map[n][i+1]=k;
flag=1;
break;
}
}
}
if(!flag)
{
for(int i=2;i<=n;i++)
{
if(map[i][n]==k-1)
{
map[i-1][1]=k;
flag=1;
break;
}
}
}
if(!flag)
{
if(map[1][n]==k-1)
{
flag=1;
map[2][n]=k;
}
}
if(!flag)
{
for(int i=2;i<=n;i++)
for(int j=1;j<n;j++)
{
if(map[i][j]==k-1)
{
x=i;
y=j;
}
}
if(map[x-1][y+1]==0)
map[x-1][y+1]==k;
else
map[x+1][y]=k;
}
}
//cout<<k<<endl;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cout<<map[i][j]<<" ";
cout<<endl;
}
return 0;
}
输入:3
输出:
0 1 0
3 0 0
4 0 2