题解:闷声大模拟
#include <iostream>
#include <cstdio>
using namespace std;
int n,h,l;
int map[50][50];
void work()
{
int x,y;
if(h==1&&l!=n){
h=n,l++;
return ;
}
if(l==n&&h!=1){
l=1,h--;
return ;
}
if(h==1&&l==n){
h++;
return ;
}
if(h!=1&&l!=n){
if(!map[h-1][l+1])
h--,l++;
else h++;
return ;
}
}
int main()
{
cin>>n;h=1,l=n/2+1;
map[h][l]=1;
for(int i=2;i<=n*n;i++)
{
work();
map[h][l]=i;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cout<<map[i][j]<<" ";
cout<<endl;
}
}