蛇形填数
时间限制:
3000 ms | 内存限制:
65535 KB
-
描述
-
在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
-
输入
- 直接输入方陈的维数,即n的值。(n<=100) 输出
- 输出结果是蛇形方陈。 样例输入
-
3
样例输出
-
7 8 1 6 9 2 5 4 3
#include <stdio.h> int main(){ int n,i,j,y,z,m,a,b,x=1; scanf("%d",&n); int Sz[n][n]; if(n%2!=0)//如果是奇数方阵,就率先赋值中心下标数组值 Sz[n/2][n/2]=n*n; a=0;b=n-1;y=n-1,z=n-1; m=n/2; while(m--){ //0~m-1,m表示遍历的圈数 i=a;j=b; for(;i<y;i++,x++){ //z表示遍历每圈需要遍历的行or列数;i,j表示每圈最右上角数组下标 Sz[i][j] = x; Sz[j][n-1-i] = x+z; Sz[n-1-i][j-z] = x+2*z; Sz[j-z][i] = x+3*z; } a++; b--; x+=3*z; //x表示每圈最右上角的真值 y--; //y--因为有i++,相当于范围-=2; z-=2; } for(i=0;i<n;i++){ for(j=0;j<n;j++) printf("%d ",Sz[i][j]);//printf("%-4d",Sz[i][j]); printf("\n"); } return 0; }