题解 | 蛇形矩阵

蛇形矩阵

https://www.nowcoder.com/practice/f228a074c5274619b26be544962375e1

#include<stdio.h>
int main()
{
	int arr[101][101];
	int n;//这里的x代表几阶方阵,同时还会用给元素赋值
	//printf("请输入一个数字:");
	scanf("%d", &n);
	arr[1][1] = 1;
	int i = 1, j = 1, pos = 1;
	for (int x = 2; x <= n * n; x++)
	{
		//这里开始分情况讨论
		if( i==1 && j<n && pos==1)//pos代表移动方向pos==1是向左下走
			//i=1,遇见上边界,向右走,还得不是第一行的最后一个元素
		{ 
			arr[1][++j] = x;
			pos = -1;//改变方向
		}
		else if (j == 1 && i < n && pos == -1)
			//遇见左边界时向下走一个第一列,向右上走
		{
			arr[++i][1] = x;
			pos = 1;//改变方向,这里是向右上走
		}
		else if (i== n  && pos == -1)//这里是遇见右边界也就是i=n的时候
		{
			arr[n][++j] = x;
			pos = 1;
		}
		else if (j == n  && pos == 1)//这里是遇见下边界,j=n的时候,向右上走
		{
			arr[++i][n] = x;
			pos = -1;
		}
		///////ok,接下来就是其他情况了
		else if (pos == 1)
		{//向左下走
			arr[--i][++j] = x;
		}
		else
		{
			arr[++i][--j] = x;
		}
	}
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= n; j++)
			printf("%d ", arr[i][j]);
		printf("\n");
	}

	return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务