#include #include #include #include #include #include #include #include #include #include #include #include #include #define CK(N,A,B) (A<=N&&N>N; int k = 0; int range=N-1; int posy = 0, posx = 0; d[posy][posx] = 1; while(1){ REP(i,0,range){ num++; posy += dy[k]; posx += dx[k]; d[posy][posx] = num; } k = (k+1)%4; if(range != N-1) cnt++; if(num == N*N) break; if(range != N-1 && cnt%2==0){ range--; }else if(range == N-1 && num == 3*N-2){ range--; } } REP(i,0,N){ REP(j,0,N){ printf("%03d ", d[i][j]); } cout<