#include<stdio.h> #include<stdlib.h> #include<string.h> int a[45][45]; int main() { int x,y,i,j,n,k; memset(a,sizeof(a),0); scanf("%d",&n); x=1; y=(n+1)/2; a[x][y]=1; i=2; while(i<=n*n) { if(x==1&&y!=n) { x=n;y=y+1; a[x][y]=i; } else if(x!=1&&y==n) { x=x-1;y=1; a[x][y]=i; } else if(x==1&&y==n) { x=x+1; y=y; a[x][y]=i; } else if(x!=1&&y!=n) { if(a[x-1][y+1]==0) { x=x-1;y=y+1;a[x][y]=i; } else { x=x+1;y=y;a[x][y]=i; } } i++; } for(k=1;k<=n;k++) { for(j=1;j<=n;j++) { if(j==1)printf("%d",a[k][j]); else printf(" %d",a[k][j]);} if(k!=n) printf("\n"); } return 0; } /************************************************************** Problem: 2344 User: admin Language: C Result: Accepted Time:46 ms Memory:1152 kb ****************************************************************/