Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 有没有办法找到有序矩阵中给定单元格的行?_Math - Fatal编程技术网

Math 有没有办法找到有序矩阵中给定单元格的行?

Math 有没有办法找到有序矩阵中给定单元格的行?,math,Math,例如,给定一个矩阵: 01|02|03|04|05 06|07|08|09|10 11|12|13|14|15 知道矩阵是5x3,有没有一种方法,如果给定值“7”,我们可以知道它在第2行?这种情况下,矩阵总是从1到n排序,从0开始 最后,矩阵线性存储在基于零的数组中 Let X be your index ------------------- column = X % width row = ceiling(X / width) 编辑:我做了一些更改,现在似乎

例如,给定一个矩阵:

    01|02|03|04|05
    06|07|08|09|10
    11|12|13|14|15
知道矩阵是5x3,有没有一种方法,如果给定值“7”,我们可以知道它在第2行?这种情况下,矩阵总是从1到n排序,从0开始

最后,矩阵线性存储在基于零的数组中

Let X be your index
-------------------
column = X % width
row    = ceiling(X / width)

编辑:我做了一些更改,现在似乎可以工作了。

如果矩阵按顺序存储,则行索引映射到元素索引,如下所示:

 rowIndex = (elementIndex - 1) / numcolumns
 columnIndex = (elementIndex % numcolumns) - 1
这总是整数除法,所以没有余数。您将获得从0开始的行和列索引

这是一个练习,用于了解列主布局中发生了什么。

如果它是基于0的:

row = ceiling(7 / 5)  or   ceiling(position / width)
行:n/宽度
列:n%宽度

在您的示例中,您说它是从零开始的,但实际上它是从1开始的,并且您将左上角的元素计算为(行,列)=(1,1),因此您需要调整数学:

行:(n-1)/宽度+1
列:(n-1)%width+1

在您的情况下,n=7,宽度=5:

行=(7-1)/5+1=1+1=2
列=(7-1)%5+1=1+1=2


注意:我使用的是标准的程序员整数数学,其中“a/b”真正的意思是“地板(a/b)”。

但是7-1/4是1.5,剩下1,在3x4矩阵中,7在第三行,或者是零基数组中的索引2。除非我遗漏了什么,否则你的答案是不对的?在你的例子中,numcolumns=5。因此,rowIndex=(7-1)/5=6/5=1(因为索引从0开始,这表示第二行)。还有,columnIndex=7%5-1=2-1=1(第二列)。为什么要修改它?这不对吗?这似乎是正确的,而且切中要害。我没有贬低它。。。但我要指出的是,虽然这是数学课的正确答案,但它不是理想的编程解决方案,因为你需要做不必要的浮点数学。另外,如果位置和宽度是整数,那么ceil(位置/宽度)的简单实现实际上将等效于ceil(地板(位置/宽度))=地板(位置/宽度)。这取决于编程语言。当然,有些人会对所有除法都使用浮点数学,除非你不厌其烦。你想要一个基于零的解决方案吗?你所接受的答案不是基于零的。另外要考虑的是你的“行1”在你的矩阵中实际上被认为是行1还是行0。这里有很多含糊不清的地方。是的,上面所说的都不是零基的。左上角的元素是1,它似乎有(行,列)=(1,1)。正如有人在回答中指出的(显然已被删除),这里有一个3x5矩阵,而不是5x3矩阵。肯定是过早接受。我的沟通不好,我的意思是它存储在一个零基数组中,而不是第一个值是零基的。