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矩阵。肯定是过早接受。我的沟通不好,我的意思是它存储在一个零基数组中,而不是第一个值是零基的。