蛇形填数的核心就是转向,
while(x+1<n&&!a[x+1][y]) a[++x][y]==++count;
每一个方向,都有临界转向范围即x+1<n 和下一个数组内是否有数值。
类似的,矩形环绕和三角环绕,
- #include <stdio.h>
- void main()
- {
- int n,a[10][10]={0},i=1,c=1;
- a[0][0]=1;
- scanf("%d",&n);//行数
- while (i<n) //i从第2行开始
- {
- x=i;y=0;
- while (y<i||y==i) //当y=i时返回
- {
- a[x--][y++]=++c; //大循环重置y值并x+1//
- }
- i++;
- }
- for (x=0;x<n;x++)
- {
- for(y=0;y<n-y;y++)
- printf("%5d",a[x][y]);
- printf("\n");
- }
- }