假设我有一个2D数组
我有一个数组,'char输入[N] [N]'被某人对角读取。
我的目标是从对角线读取的'char input [N] [N]'数组中重现原始数组'char input_original [N] [N]'
在对角线阅读后,我的输入是,
a d b
c e g ------------------->矩阵A
h f i
现在我想把它作为
a b c
d e f ------------------->矩阵B(input_original array)
g h i
矩阵A是矩阵B的对角线读取输出(db ceg hf i - >将其作为矩阵)
欢迎所有建议。
答案 0 :(得分:3)
如果它是对角线的话,我只计算通过矩阵的“路径”,例如
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
也就是说,您按照读取它们的顺序存储索引。完成此操作后,您可以根据这些索引填充矩阵。
因此,在这种情况下最困难的是如何计算路径。您可以按如下方式执行此操作:首先,我们认识到该路径仅包含四个方向:
此外,我们认识到只允许一些指示顺序:
使用这些知识计算路径没有问题:我们只需存储最后的方向和当前位置。然后,我们必须通过以下方式计算下一个方向:
我希望我没有弄乱任何东西,但我认为这是一种非常实用的方法。