AcWing 756. 蛇形矩阵
宋标 Lv5

题目

输入两个整数 ,输出一个 列的矩阵,将数字 按照回字蛇形填充至矩阵中。

具体矩阵形式可参考样例。

输入格式

输入共一行,包含两个整数

输出格式

输出满足要求的矩阵。

矩阵占 行,每行包含 个空格隔开的整数。

数据范围

输入样例:

3 3

输出样例:

1 2 3
8 9 4
7 6 5

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>

using namespace std;

const int N = 110;

int n, m;
int res[N][N];


int main()
{
cin >> n >> m;

int xy[][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};

for (int x = 0, y = 0, d = 1, k = 1; k <= n * m; ++ k)
{
res[x][y] = k;
int a = x + xy[d][0], b = y + xy[d][1];
if (a < 0 || a >= n || b < 0 || b >= m || res[a][b])
{
d = (d + 1) % 4;
a = x + xy[d][0], b = y + xy[d][1];
}
x = a, y = b;
}

for (int i = 0; i < n; i ++ )
{
for (int j = 0; j < m; j ++ ) cout << res[i][j] << ' ';
cout << endl;
}

return 0;
}

xy坐标不要再搞混了…

 评论