蛇形填数
//先下,到不能填为止,->左->上->右 ,依次循环
#include<iostream.h>
#include<string.h>
const int MAXN=10;
int a[MAXN][MAXN];
int n;
int main()
{
cin>>n;
memset(a,0,sizeof(a));
int x=0, y=n-1;
int total=a[x][y]=1;
while(total<n*n){
while(x+1<n&&!a[x+1][y]){
a[++x][y]=++total;
}
while(y-1>=0&&!a[x][y-1]){
a[x][--y]=++total;
}
while(x-1>=0&&!a[x-1][y]){
a[--x][y]=++total;
}
while(y+1<n&&!a[x][y+1]){
a[x][++y]=++total;
}
}
for(x=0;x<n;x++){
for(y=0;y<n;y++){
printf("%3d",a[x][y]);
}
printf("\n");
}
return 0;
}