1 32 31 30 29 28 27 26 25
2 33 56 55 54 53 52 51 24
3 34 57 72 71 70 69 50 23
4 35 58 73 80 79 68 49 22
5 36 59 74 81 78 67 48 21
6 37 60 75 76 77 66 47 20
7 38 61 62 63 64 65 46 19
8 39 40 41 42 43 44 45 18
9 10 11 12 13 14 15 16 17
#include<stdio.h>
#define N 9
int num = 1;
int a[N][N]={0};
void luo(int size, int r, int c)
{
int i;
if(size == 1)
{
a[r][c] = num;
return;
}
if(size < 0)
return;
for(i=0; i<size; ++i)
a[i+r][c] = num++;
for(i=1; i<size;++i)
a[r+size-1][c+i] = num++;
for(i=size-2; i>=0;--i)
a[r+i][c+size-1]=num++;
for(i=size-2;i>=1;--i)
a[r][c+i]=num++;
luo(size-2, r+1, c+1);
}
void main()
{
int i, j;
luo(N, 0, 0);
for(i=0; i<N; ++i)
{
for(j=0; j<N; ++j)
printf("%5d", a[i][j]);
printf("/n");
}
}