查找添加到其他数组

时间:2015-09-02 07:44:30

标签: c# algorithm

我有两个拥有大量物品的阵列,近百万件物品。我需要找出从数组1求和到数组2中各个元素或元素组合的所有元素组合。要组合的元素数量是可变的。 例如:Array1 {1,2,3,4,5,6,7,8,9}     Array2 {5,8,10}

将Array1中的1项与array2中的项匹配

5 => 5

8 => 8

将Array1中的2个项目与array2中的1个项目组合起来

1,4 => 5

2,3 => 5

2,6 => 8

1,7 => 8

3,5- => 8

6,4 => 10

7,3 => 10

8,2 => 10

9,1 => 10

将Array1中的2个项目与array2中的2个项目组合起来

9,4 =→5 + 8

8,5 =→5 + 8

7,6 =→5 + 8

9,6 =→5 + 10

8,7 =→5 + 10

等用于组合3个项目。 我需要编写一个代码来实现这个目标吗?有没有人遇到过这样的问题? 提前致谢。

1 个答案:

答案 0 :(得分:2)

假设您有一个只有1000个元素的数组,并且您想要考虑数组中100个元素的每个组合。您需要处理多少种组合?

嗯,它是由组合数量的公式给出的:

C = N!/(K!(N-K!)

其中N = 1000且K = 100。

所以C = 1000!/(100!* 900!)=(约)6.4 * 10 ^ 139

这是一个非常大的数字,完全不可能在任何合理的时间内完成所有这些组合。 (即使你每秒可以处理一百万个组合,它也需要比现在的宇宙年龄多出许多倍。)

这只是您描述的问题的一个子集,而且您的阵列还有近百万个元素。

因此,您的问题的答案是:这是不可能的。