#include<stdio.h>
#include<string.h>
#define max 20
int a[max][max];
int main()
{
int n;
int count = 1;
scanf("%d",&n);
int x = 0,y = n - 1;
memset(a,0,sizeof(a));
a[0][n-1] = 1;//先进行赋值
while (count < n * n)
{
while(!a[x + 1][y] && x + 1 < n) a[++x][y] = ++count;//向下,并且判断下一个是否符合,因此就需要先将a[0][n-1]=1,先进行赋值
while(!a[x][y - 1] && y - 1 >= 0 ) a[x][--y] = ++count;//向左
while(!a[x-1][y] && x -1 >= 0) a[--x][y] = ++count;//向上
while(!a[x][y+1] && y + 1 < n) a[x][++y] = ++count;//向右
}
for(int i =0; i < n;i++)
{
for(int j =0;j < n ;j++)
{
printf("%-3d ",a[i][j] );
}
printf("\n");
}
return 0;
}
先进行判断,在进行填数