的共同要素的假设有几个数组:一个发现设置组阵列
A. [1,2,3,4,5,6,7,8,9,10]
B. [2,4,6,8,10]
C. [1,4,7,10]
D. [1,3,5,7,9]
.
.
我需要找出元素的所有可能集(1,2,3,4,5 ...)各
(2,4,6,8,10) -> (A,B)
(1,4,7,10) -> (A,C)
(1,3,5,7,9) -> (A,D)
(4,10) -> (A,B,C)
(1,7) -> (A,C,D)
实际输入是包含字符串的文件:其中在-至少2门阵列(A,B,C ....),并将其显示在下面的方式是常见的。可能有数千个文件,每个文件可能包含超过一百个密钥字符串。
我试过以下方法: 首先我通过比较所有可能的数组对来生成元素集。然后我尝试使用逻辑来生成其他集合 - 元素集合的交集在数组集合中很常见。就像这样:
(2,4,6,8,10) -> (A,B)
(1,4,7,10) -> (A,C)
从上面我们可以得到:
intersect((2,4,6,8,10),(1,4,7,10)) -> union((A,B),(A,C))
or, (4,10) -> (A,B,C)
是否有其他办法,我可以尝试提高时间和内存的复杂性 - 考虑包含数百个各元素的千元输入文件?