我有二维数组并希望将其转换为一维数组。
2D数组是:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
到1D数组:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
如何在1D数组中访问元素编号 6 的最近邻居,以便在访问2D数组时获得相同的结果,例如
1 2 3
5 6 7
9 10 11
在C ++中?
答案 0 :(得分:3)
如果您有一个M
个项目长N
项高的2D数组,则需要一个具有M*N
个元素的一维数组。
尝试查找元素x
的邻居时:
left(x) = (x - 1) % M
right(x) = (x + 1) % M
above(x) = (x - M) % (M * N)
below(x) = (x + M) % (M * N)
请注意,上述解决方案使阵列的底部和顶部相邻,以及右边缘和左边缘。要摆脱这种情况,只需省略模块化数学并检测索引何时移过右/左/上/下边缘。