在2D数组中查找节点位置

时间:2014-02-03 16:32:58

标签: java algorithm

任何人都可以帮我解决这个问题:

有一个2D数组,其中每个单元格包含它的占位符含义(0,0)包含0(0,1)包含1等等......所以如果我们给出占位符那么我们如何计算行和列。示例:采用4X4矩阵。所以,配置是:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

现在,以10为例。这是第(2,2)个位置。那么,我们如何确定呢? 我已经有一个算法,我从10减去2 * 4(因为4是数组的大小),2给我行,2给我列。所以,就像:

column =给定节点 - (row * n),其中n是nXn数组的大小,row是0,1,2,..

但我需要一个更好的算法。至少时间复杂度应该更低。建议请程序员。

p.S:我在设计蒙特卡罗模拟解决方案时遇到了这个问题。

4 个答案:

答案 0 :(得分:2)

row = node / n (integer division, for example 9/4 = 2)
column = node % n (modolus operator)

以上是指n*n矩阵,适用于包含n行和m列的矩阵的一般情况:

row = node / m
column = node % m

答案 1 :(得分:0)

如果矩阵行宽为RowWidth 然后:

row=floor(x/RowWidth)
col=x % RowWidth

答案 2 :(得分:0)

(Num / 4,Num%4)您可能正在寻找什么?

编辑:其中4是行数或列数,在这种情况下两者都是4。

答案 3 :(得分:0)

要确定列表中元素的2D坐标,您应该使用以下内容(ROW表示行大小):

int r = index / ROW;
int c = index % ROW;

例如: 10/4 = 2, 10%4 = 2

希望这有帮助!