C语言实现蛇形矩阵/蛇形数组并输出(C语言学习记录--陌生兔)

引言

编程题:输入正整数n(n 【例如】
n=10
1 2 6 7
3 5 8
4 9
10

思路

昨天晚上无意看到这题,打算尝试一下。这种题无非就是找规律,和数学题差不多。当时没有工具,勉强在手机上的表格上写了蛇形数组,观察了下思路立马就出来了。
C语言实现蛇形矩阵/蛇形数组并输出(C语言学习记录--陌生兔)_第1张图片
简单描述下,蛇是蛇形走位,不走寻常路,主要走副对角线,碰到上顶或左顶就掉头。由于是对角线,然后我发现对角线的前进距离刚好和掉头的次数相同,于是这题就解决了。

代码

#include
#define MAX 100
int main()
{
	void snake_bloking();
	snake_bloking();
	return 0;
} 
void snake_bloking()
{
	int a[20][20]={0},m=1,n=0,i=0,j=0,k=0;   	//m存入数字,n输出长度,k端点计数 
	do
	{
		printf("请输入蛇的长度(0);
		scanf("%d",&n);
	}while(n>MAX||n<1);
	a[0][0]=1; 
	while(m<n)
	{
										a[i][++j]=++m,++k;		//→ 
		for(int x=k;m<n&&x>0;--x)		a[++i][--j]=++m; 		//↙ ↙ ↙ ↙ 
		if(m<n)							a[++i][j]=++m,++k;		//↓ 
		for(int x=k;m<n&&x>0;--x)		a[--i][++j]=++m;		//↗ ↗ ↗ ↗ 
	}
	for(int p=0;p<20;++p)
	{
		for(int q=0;q<20;++q)
			if(a[p][q]!=0)		printf("%4d",a[p][q]);	
		printf("\n");
	}
}

运行结果

C语言实现蛇形矩阵/蛇形数组并输出(C语言学习记录--陌生兔)_第2张图片
2019.11.30(原创)

你可能感兴趣的:(C语言学习记录,蛇形数组,C语言,学习记录)