我有两个拥有大量物品的阵列,近百万件物品。我需要找出从数组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个项目。 我需要编写一个代码来实现这个目标吗?有没有人遇到过这样的问题? 提前致谢。
答案 0 :(得分:2)
假设您有一个只有1000个元素的数组,并且您想要考虑数组中100个元素的每个组合。您需要处理多少种组合?
嗯,它是由组合数量的公式给出的:
C = N!/(K!(N-K!)
其中N = 1000且K = 100。
所以C = 1000!/(100!* 900!)=(约)6.4 * 10 ^ 139
这是一个非常大的数字,完全不可能在任何合理的时间内完成所有这些组合。 (即使你每秒可以处理一百万个组合,它也需要比现在的宇宙年龄多出许多倍。)
这只是您描述的问题的一个子集,而且您的阵列还有近百万个元素。
因此,您的问题的答案是:这是不可能的。