
- 这道题我们看完题目应该就会做了吧,直接模拟就行了,不多说。
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int a[45][45];
bool is[45][45];
int n;
void build(int x,int y,int now)
{
a[x][y]=now;
is[x][y]=1;
if(now==n*n)
return;
if(x==1&&y!=n)
build(n,y+1,now+1);
else if(x!=1&&y==n)
build(x-1,1,now+1);
else if(x==1&&y==n)
build(x+1,y,now+1);
else if(is[x-1][y+1]!=1)
build(x-1,y+1,now+1);
else
build(x+1,y,now+1);
return;
}
int main()
{
scanf("%d",&n);
build(1,(n+1)/2,1);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
if(j==n)
printf("%d\n",a[i][j]);
else
printf("%d ",a[i][j]);
}
return 0;
}