题目:
只是模拟。
#include#include #include #include 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;}