将N * M * K数组的索引转换为N,M和K值?

时间:2018-09-01 21:58:07

标签: arrays

假设我有一个3*3*3 3D 数组

如果我在数组的[1,1,1]位置有一个元素,我可以通过1*3*3 + 1*3 + 1 = 13来找到索引

但是我需要做相反的事情。我需要将13转换为[1,1,1]。我该怎么办?

1 个答案:

答案 0 :(得分:1)

使用模运算

 13 / 3 / 3 == 1 // 1st index
 13 / 3 % 3 == 1 // 2nd index
 13 % 3 == 1     // 3d index

其中/整数除,而%余数

编辑:让我们概括一下

  # you have M = N = K = 3
 [M, N, K] array

和任意value(在您的情况下为13

  M-th index = value / K / N # % M can be dropped 
  N-th index = value / K % N
  K-th index = value % K    

mD数组的情况下

 [N1, N2, ..., Ni, ..., Nm]

我们有

 i-th index = value / Nm / Nm-1 / ... / Ni+1 % Ni