【发布时间】:2012-09-24 11:49:25
【问题描述】:
给定一个 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[3][4] (x = 7) 的二维矩阵 A[6][6] 中,可以通过以下方式创建对角线:
A[1][6] -> A[2][5] -> A[3][4] -> A[4][3] -> A[5][2] -> A[6][2]
在这里,我们将问题转化为另一个问题,即计算对角线以下的元素,包括对角线。
我们可以很容易地计算O(m) 复杂度而不是花费O(m^2) 其中2 是矩阵的顺序。
但是如果我们考虑 N 维矩阵,我们将如何做,因为在 N 维矩阵中,如果我们知道那个位置的索引,
其中索引总和为x 说A[i1][i2][i3][i4]....[in] 次。
那么可能有多个满足该条件的对角线,例如通过i1-- 我们可以增加{i2, i3, i4....in} 中的任何一个
因此,上述用于二维矩阵的方法在这里变得无用......因为只有两个变量 i1 和 i2 存在。 请帮我找到解决办法
【问题讨论】:
-
我可能没有正确理解,但您似乎在问这个问题:给定 x、n(维数)和 N,您可以通过多少种方式对 0 到 0 之间的 n 个整数求和N 得到大于 x 的值。
标签: algorithm matrix permutation combinations