洛谷P5731 【深基5.习6】蛇形方阵(C++版)

原题转送门:

https://www.luogu.com.cn/problem/P5731

题目描述

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

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

输入格式

输出格式

输入输出样例

4

输出

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

代码(这个写法较为繁琐):

#include
#include
using namespace std;
int a[9][9] = {
      0 };
int main() {
     
	int n;
	cin >> n;
	int count = 0;//设置总数标记
	int i = 0, j = 0;
	count++;
	a[i][j] = count;
	int m = n;//设置每个环行、列的上限
	while (count < n * n)
	{
     
		//向右
		j++;
		while (j < m)
		{
     
			count++;
			a[i][j++] = count;
		}
		j--;
		//向下
		i++;
		while (i < m)
		{
     
			count++;
			a[i++][j] = count;
		}
		i--;
		//向左
		j--;
		while (j > n - m - 1)
		{
     
			count++;
			a[i][j--] = count;
		}
		j++;
		//向上
		i--;
		while (i > n - m)
		{
     
			count++;
			a[i--][j] = count;
		}
		i++;
		m--;
	}
	for (int k = 0; k < n; k++)
	{
     
		for (int l = 0; l < n; l++)
		{
     
			/*printf("%3d", a[k][l]);*/
			if (a[k][l] < 10)
			{
     
				cout << "  " << a[k][l];
			}
			else
			{
     
				cout << " " << a[k][l];
			}
		}
		cout << endl;
	}
	return 0;
}

欢迎任何形式的转载,但请务必注明出处。

限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教 。

你可能感兴趣的:(洛谷)