Arrays 从数字向后映射到(i,j,k)
我有一个Arrays 从数字向后映射到(i,j,k),arrays,Arrays,我有一个3D数组arr[I][j][k]。如果我想将(I,j,k)映射到一个数字,那么我可以使用I*Ry*Rz+j*Ry+k。如果我想向后映射,即给定一个数字,我想要(I,j,k),该怎么办。我无法推导出这个公式。有人能帮忙吗? i、j、k的范围分别为0到Rx、Ry、Rz 行/列的主次顺序都可以。因为您使用的是3D数组,所以需要在O(n^3)中循环,以查找i、j和k中哪些值指向包含您正在搜索的值的内存位置 实际上,您已经用设置位置的公式证明了这一点 编辑:我误解了你的问题。我以为您想反向查找存储
3D
数组arr[I][j][k]
。如果我想将(I,j,k)
映射到一个数字,那么我可以使用I*Ry*Rz+j*Ry+k
。如果我想向后映射,即给定一个数字,我想要(I,j,k)
,该怎么办。我无法推导出这个公式。有人能帮忙吗?
i、j、k
的范围分别为0
到Rx、Ry、Rz
行/列的主次顺序都可以。因为您使用的是3D数组,所以需要在
O(n^3)
中循环,以查找i
、j
和k
中哪些值指向包含您正在搜索的值的内存位置
实际上,您已经用设置位置的公式证明了这一点
编辑:我误解了你的问题。我以为您想反向查找存储在内存中的值,以找到它在数组中的位置。我认为以下方法可以奏效。 假设您有number
num
和arraya[Rx][Ry][Rz]
。要获取索引(i,j,k)
,请执行以下操作(这是针对列主顺序):
和int商=num/(Rx*Ry)
int余数=num%(Rx*Ry)
和k=商
num=余数
和商=num/Rx
余数=num%Rx
和j=商
i=余数
最后我们得到
(i,j,k)
a[i][j][k]
将对应于给定的num
我希望不使用循环就获得它。您不能。x维数组必须在O(n^x)
中循环才能反向匹配。