例题3-3 蛇形填数

在nxn的方阵里填入1,2,3,4....nxn,要求填成蛇形。例如,n=4时方阵为:
10 11 12 1
9  16 13 2
8  15 14 3
7  6  5  4

上面的方格中,多余的空格只是为了便于观察规律,不必严格输出。n<=8。

#include <stdio.h>
#include <string.h>
#define maxn 10
int a[maxn][maxn];
int main()
{
	int n,i=0,j=0,k=1;
	scanf("%d",&n);
	memset(a,-1,sizeof(a));
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++) 
		{
			a[i][j]=0;
		}
		//printf("*");
	} 
		
	a[i=0][j=n-1]=1;
	k++;
	while(k<=n*n)
	{
		while(i+1<n&&a[i+1][j]==0)//向下走 
		{
			i=i+1;
			a[i][j]=k;
			k++; 
			//printf("1*");
		}
		while(j-1>=0&&a[i][j-1]==0)//向左走 
		{
			j=j-1;
			a[i][j]=k;
			k++;
			  //printf("2*");
		}
		while(i-1>=0&&a[i-1][j]==0)//向上走 
		{
			i=i-1;
			a[i][j]=k;
			k++; 
			 //printf("3*");
		}
		while(j+1<n&&a[i][j+1]==0)//向右走 
		{
			j=j+1;
			a[i][j]=k;
			k++; 
			 //printf("4*");
		}
	}
	
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_27848283/article/details/80979618