题目:https://www.luogu.org/problemnew/show/P2615
只是模拟。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=45; int n,x,y,tx,ty,a[N][N],tot; int main() { scanf("%d",&n); tot=n*n; y=((n+1)>>1); x=1; a[x][y]=1; for(int i=2;i<=tot;i++) { if(x==1&&y!=n) x=n,y++,a[x][y]=i; else if(x>1&&y==n) x--,y=1,a[x][y]=i; else if(x==1&&y==n) x++,a[x][y]=i; else { if(!a[x-1][y+1]) x--,y++,a[x][y]=i; else x++,a[x][y]=i; } } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) printf("%d ",a[i][j]); printf("\n"); } return 0; }