蛇形填数

蛇形填数问题

题意描述

输入一个整数,输出一个矩阵;
矩阵的形状跟蛇形差不多,从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;
}