大量数组对比取得n个不重复组合
时间: 2024-05-03 18:18:47 浏览: 57
如果你想从一个大量的数组中取出n个不重复的组合,可以使用组合数学中的组合公式,即从n个元素中取出m个元素的组合数为C(n,m) = n!/(m!(n-m)!)。
在实现上,你可以使用递归或迭代来生成所有可能的组合。下面是一个使用递归的示例代码:
```python
def combinations(arr, n):
if len(arr) < n:
return []
if len(arr) == n:
return [arr]
if n == 1:
return [[x] for x in arr]
result = []
for i in range(len(arr)):
first = [arr[i]]
rest = arr[i+1:]
for c in combinations(rest, n-1):
result.append(first + c)
return result
```
该函数接受两个参数:一个数组和一个整数n。它返回一个包含所有可能的n个元素组合的列表。
例如,对于数组[1,2,3,4,5]和n=3,该函数将返回以下结果:
```
[[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]
```
注意,这种方法可能不适用于非常大的数组,因为它需要生成所有可能的组合。在这种情况下,你可能需要使用一些更高效的算法来生成组合。