求a,b,c有属性x [a] [b] = x [a] [c] = x [b] [c]

时间:2013-10-14 23:30:12

标签: c++ arrays algorithm search

我有一个名为x的二维数组。我想尽可能快地计算所有三元素组x[a][b] = x[a][c] = x[b][c]。我不需要知道那些元素,我只需要这些元素的数量。

该数组的第一个维度的大小等于第二个维度的大小。

我知道蛮力解决方案,它的复杂度为O(n ^ 2),其中n是数组的大小。我想有一个更快的解决方案,但我不知道它是什么样的。

2 个答案:

答案 0 :(得分:2)

除了暴力之外我什么也看不见。

在每一行中搜索一对,然后检查该对的x [b] [c]。

让数组为NxN。将行的每个元素与行的每个其他元素进行比较需要

N choose 2 = N(N-1)/2 = O(N^2)

比较,您需要为所有N行提供O(N^3)。如果您的谈话总大小(M=N^2)则为O(N^(3/2))

答案 1 :(得分:0)

我很确定蛮力解决方案是O(N ^ 3)

另一个解决方案(除了普通(0,0,0)之外)将使用其值作为键将每对放入哈希表中。然后在重复项中查找符合您标准的对。