本文已参与「新人创作礼」活动,一起开启掘金创作之路。 题目描述
给出一个不大于 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;
}