蛇形填数(充分利用数组知识)
在n*n方阵里填入1,2···,n*n,要求天成蛇形,如n=4时。
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5
1 #include<stdio.h> 2 #include<string.h> 3 #define MAX 10 4 int a[MAX][MAX];//注意定义在main()外的好处; 5 int main() 6 { 7 int n,tot; 8 int x,y,i,j; 9 scanf("%d",&n); 10 memset(a,0,sizeof(a)); 11 a[x=0][y=n-1]=1;tot=1; 12 while(tot<n*n) 13 { 14 while(x+1<n&&!a[x+1][y]) 15 a[++x][y]=++tot; 16 while(y-1>=0&&!a[x][y-1]) 17 a[x][--y]=++tot; 18 while(x-1>=0&&!a[x-1][y]) 19 a[--x][y]=++tot; 20 while(y+1<n&&!a[x][y+1]) 21 a[x][++y]=++tot; 22 } 23 for(i=0;i<n;i++) 24 { 25 for(j=0;j<n;j++) 26 printf("%3d",a[i][j]); 27 printf("\n"); 28 } 29 return 0; 30 }
4