任何人都可以帮我解决这个问题:
有一个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:我在设计蒙特卡罗模拟解决方案时遇到了这个问题。
答案 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
希望这有帮助!