P5731 【深基5.习6】蛇形方阵

123 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 题目描述

给出一个不大于 9 的正整数 nn,输出 n\times nn×n 的蛇形方阵。

从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。 输入格式

无 输出格式

无 输入输出样例

输入 #1复制

4

输出 #1复制

1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7

#include<iostream>
using namespace std;
int main()
{
	int n,k=1,a[10][10];
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			a[i][j] = 0;
		}
	}
	int x, y = x = 0;
	a[0][0] = 1;
	for (k = 2; k <= n * n; )
	{
		while (x < n-1 && a[y][x+1] == 0)
		{
			x++;
			a[y][x] = k;
			k++;
		}
		while (y < n - 1 && a[y + 1][x] == 0)
		{
			y++;
			a[y][x] = k;
			k++;
		}
		while (x > 0 && a[y][x - 1] == 0)
		{
			x--;
			a[y][x] = k;
			k++;
		}
		while (y > 0 && a[y - 1][x] == 0)
		{
			y--;
			a[y][x] = k;
			k++;
		}
	}
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			if (a[i][j] < 10)
				cout << "  ";
			else
				cout << " ";
			cout << a[i][j];
		}
		cout << endl;
	}
	return 0;
}