我们得到一个N维矩阵,其顺序为[m] [m] [m] .... n倍,其中值位置包含其索引的值和。
例如,在6x6矩阵A
中,位置A[3][4]
的值将为7。
我们必须找出大于x的元素总数。对于二维矩阵,我们有以下方法:
如果我们知道一个索引说[i][j] {i+j = x}
,那么我们只需[i++][j--]
[i--][j++]
i
创建一个对角线,约束j
和0
总是范围为m.
到A[1][6] -> A[2][5] -> A[3][4] -> A[4][3] -> A[5][2] -> A[6][2]
例如,在值A [3] [4](x = 7)的二维矩阵A [6] [6]中,可以通过以下方式创建对角线:
O(m)
在这里,我们将问题转换为另一个问题,即计算对角线以下的元素,包括对角线。
我们可以轻松计算O(m^2)
复杂度,而不是花费2
,其中x
是矩阵的顺序。
但是如果我们考虑N维矩阵,我们将如何做,因为在N维矩阵中如果我们知道该位置的索引,
其中索引之和为A[i1][i2][i3][i4]....[in]
,表示i1--
次。
然后可能有多个对角线满足该条件,比如做{i2, i3, i4....in}
我们可以递增任何{{1}}
因此,上面使用的二维矩阵方法在这里变得无用......因为只有两个变量i1和i2存在。 请帮我找到解决方案
答案 0 :(得分:1)
对于2D:对角线以下元素的计数为triangular number。
对于3D:对角线平面下方元素的计数为tetrahedral number
注意,Kth四面体数是前K个三角数的总和。
对于nD: n-simplexial (我不知道确切的英语术语)数字(是第一个(n-1) - 简单数字的总和)。
Kth n-simplexial的值是
S(k, n) = k * (k+1) * (k+2).. (k + n - 1) / n! = BinomialCoefficient(k+n-1, n)
编辑:此方法对于主要反对角(超)平面下的X的有限值“按原样”工作。
生成功能方法: 我们有多项式
A(S)= 1个+ S + S ^ 2个+ S ^ 3 + .. + S ^ M
然后它是第n个权力 B(s)= A n (s)具有重要特性:s的k次幂系数是从n个次序组成k的方式的数量。因此,第n个到第k个系数的总和给出了低于第k个对角线的元素的数量答案 1 :(得分:0)
对于二维矩阵,您将问题转换为另一个问题,即count the elements below the diagonal including the diagonal
。
尝试将其显示为3维矩阵。在三维矩阵的情况下,问题将减少到另一个问题,即count the elements below the diagonal plane including the diagonal