【问题标题】:Finding node position in a 2D array在二维数组中查找节点位置
【发布时间】:2014-02-27 05:56:47
【问题描述】:

谁能帮我解决这个问题:

有一个二维数组,其中每个单元格包含它的占位符含义 (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:我在设计蒙特卡罗模拟解决方案时遇到了这个问题。

【问题讨论】:

    标签: java algorithm


    【解决方案1】:
    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
    

    【讨论】:

    • 感谢@amit 的帮助。
    【解决方案2】:

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

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

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

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      (Num / 4 , Num % 4) 可能是你要找的东西?

      编辑:其中 4 是行数或列数,在本例中均为 4。

      【讨论】:

        【解决方案4】:

        如果你的矩阵行宽是RowWidth 然后:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-07-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-19
          • 1970-01-01
          • 2018-04-10
          • 2022-11-19
          相关资源
          最近更新 更多