题解 | #蛇形矩阵#

蛇形矩阵

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

#include <stdio.h>

int main()
{
	int n;
	while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case
		// 64 位输出请用 printf("%lld") to 
		int i = 0;
		int j = 0;
		int p = 0;
		int q = 0;
		int num = 0;//要赋值的数
		int k = 0;
		int arr[1000][1000] = { 0 };
		p = 0;

		while (k++ < 2 * n - 1)
		{
			//左下角
			if (k % 2 == 1 && k <= n)//向右上
			{
				for (; i < n && i >= 0 && j >= 0 && j < n; i--, j++)
				{
					arr[i][j] = ++num;
				}
				i++;
			}
			else if (k <= n) {//向左下
				for (; i < n && i >= 0 && j >= 0 && j < n; i++, j--)
				{
					arr[i][j] = ++num;
				}
				j++;
			}
			else {//右下角
				if (k % 2 == 1)//向右上
				{
					if (k == n + 1)
					{
						i--;
						j++;
					}
					for (; i < n && i >= 0 && j >= 0 && j < n; i--, j++)
					{
						arr[i][j] = ++num;
					}
					i++;
					i++;
					j--;
				}
				else {//向左下
					if (k == n + 1)
					{
						i++;
						j--;
					}
  					for (; i < n && i >= 0 && j >= 0 && j < n; i++, j--)
					{
						arr[i][j] = ++num;
					}
					i--;
					j++;
					j++;
				}
			}
		}
		//k==2*n
		for (i = 0; i < n; i++)
		{
			for (j = 0; j < n; j++)
			{
				printf("%d ", arr[i][j]);
			}
			printf("\n");
		}
	}
	return 0;
}

全部评论

相关推荐

03-12 11:54
门头沟学院 Java
dghyuiok:佬太厉害了,我也27双非,只会黑马商城和苍穹外卖,靠这两个烂大街项目,装成大三面了4个一个没中
点赞 评论 收藏
分享
04-28 19:31
门头沟学院 Java
真烦好烦真烦:可恶的二手车贩子,居然对我们门头沟学院的人这么没礼貌
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务