题解 | #回型矩阵#

回型矩阵

https://www.nowcoder.com/practice/36d5dfddc22c4f5b88a5b2a9de7db343

#include <stdio.h>

int main()
{
	int n=0;
	int i1 = 0, i2 = 0;
	int c = 1;//循环减小t判断
	int shu = 1;//1到n数
	int zu[100][100] = { 0 };
	int t;

	scanf("%d", &n);
	for (i2 = 0; i2 < n; i2++)
	{
		zu[0][i2] = shu++;
	}

	for (i1 = 1; i1 < (n * 2 - 1); i1++)
	{
		switch (c%4)//下左上右
		{
		case 1:
			 t = 0;
			for (i2 = (c-1)/2; i2 <n-1; i2++)
			{
				zu[(c - 1) / 4 +1+t++][n- (c - 1) / 4 -1] = shu++;
			}
			c++;
			break;
		case 2:
			t = 0;
			for (i2 = (c - 1) / 2; i2 < n-1; i2++)
			{
				zu[n - (c - 1) / 4-1][n - (c - 1) / 4 -2+t--] = shu++;
			}
			c++;
			break;
		case 3:
			t = 1;
			for (i2 = (c - 1) / 2; i2 < n-1; i2++)
			{
				zu[n -t++-1-(c - 1) / 4][(c - 1) / 4 ] = shu++;
			}
			c++;
			break;
		case 0:
			t = 1;
			for (i2 = (c - 1) / 2; i2 < n - 1; i2++)
			{
				zu[(c - 1) / 4+1][(c - 1) / 4 +(t++)] = shu++;
			}
			c++;
			break;
		}
	}
	for (i1 = 0; i1 < n; i1++)
	{
		for (i2 = 0; i2 < n;i2++)
		{
			printf("%d ", zu[i1][i2]);
		}
		printf("\n");
	}


	return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务