C语言螺旋方阵 看程序不太明白,具体有什么思路

来源:百度知道 编辑:UC知道 时间:2024/07/03 16:13:12
C语言螺旋方阵 看程序不太明白,具体有什么思路
下面是程序,但是具体的实现不明白,各参数什么意思,请各位大侠指导!

main( )
{ int i,j,r,l,b,d,pl,N;
printf("Input Height:"); /*输入高度*/
scanf("%d",&N);
for (i=1;i<=N;i++)
{ for (j=1;j<=N;j++) /*定位到第i行第j列*/
{ r=i;d=0;pl=j-r;
if (r>N-j+1) {r=N-j+1;d=1;pl=i-r;}
if (r>N-i+1) {r=N-i+1;d=2;pl=N-j+1-r;}
if (r>j) {r=j;d=3;pl=N-i+1-r;}
/*找出圈数,边的位置,在边上的位置*/
l=N-2*(r-1)-1;/*边长*/
b=(4*N-4)*(r-1)-4*(r-1)*(r-2)+1;
/*本圈开始的数字*/
printf("%4d",b+l*d+pl);/*打印数字*/
}
printf("\n");
}
}

就是序号1,2,3,。。。从外圈向内圈转圈排列。
例如 4x4 排列:

01 02 03 04
12 13 14 05
11 16 15 06
10 09 08 07

编程时考虑第几行递增,第几行递减。
从哪一格循环到哪一格。依次放入1,2,3。。。n*n