蛇形填数
蛇形填数问题
题意描述
输入一个整数,输出一个矩阵;
矩阵的形状跟蛇形差不多,从1开始逐步加1;
解题思路:
思想就是从最开始位置一步一步走到最后,最开始的时候把数组所有数设置为0,然后进行判断,无非就四个方向依次走完就行。
需要注意的就是:在输出的时候可能数列不整齐,所以要对宽度进行设置;
图示样例:
程序代码:
#include<stdio.h>
#include<string.h>
int a[10][10];
int main()
{
int x,y,n,t=0;
scanf("%d", &n);
memset(a,0,sizeof(a));//将数组所有数置零
t=a[x=0][y=n-1]=1;
while(t<n*n){
while(x+1<n&&!a[x+1][y])
a[++x][y]=++t;
while(y-1>=0&&!a[x][y-1])
a[x][--y]=++t;
while(x-1>=0&&!a[x-1][y])
a[--x][y]=++t;
while(y+1<n&&!a[x][y+1])
a[x][++y]=++t;
}
int i,j;
for(i=0; i<n; i++){
for(j=0; j<n; j++)
printf("%3d ", a[i][j]);
printf("\n");
}
return 0;
}