NYOJ33 蛇形填数

    xiaoxiao2021-03-26  26

    蛇形填数

    时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 3 描述 在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; }
    转载请注明原文地址: https://ju.6miu.com/read-662247.html

    最新回复(0)