我正在寻找一种可以遍历网格并将其转换为具有新顺序索引的另一个网格的算法。
基本上,给定一个大小为 n*m 的网格:
1_1 1_2 1_3 ... 1_n
2_1 2_2 2_3 ... 2_n
.
.
.
m_1 m_2 m_3 ... m_m
我怎样才能将其转换为:
1_1 1_2 1_4 ...
1_3 1_5 ...
1_6 ...
...
.
.
.
假设您遍历第一个网格,在顶行从左到右,然后在第二行从左到右,一直到,在底行从左到右。
基本上我将元素推入一个上三角形。
另一个问题是我如何仅通过知道 n 和 m 来计算用于存储三角形的网格的长度和宽度?有公式吗?
例如,一个 5*6 的网格,变成了 8*7...
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
变成:
1 2 4 7 11 16 22 29
3 5 8 12 17 23 30
6 9 13 18 24
10 14 19 25
15 20 26
21 27
28