Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 寻找满足条件的集合组合的最佳方法_C++_Algorithm_Combinations - Fatal编程技术网

C++ 寻找满足条件的集合组合的最佳方法

C++ 寻找满足条件的集合组合的最佳方法,c++,algorithm,combinations,C++,Algorithm,Combinations,我遇到了一个问题:有几组数字,我需要找到它们的所有组合,其中我只从每组中选择一个值。第一组中的第一个元素,第二组中的第二个元素,等等。例如: Set1 - {1, 2, 3} Set2 - {4, 5, 6, 7} Set3 - {8, 9, 10} 结果应该是: 1, 4, 8 1, 4, 9 1, 4, 10 1, 5, 8 1, 5, 9 1, 5, 10 ... 3, 7, 9 3, 7, 10 我写了一个简单的递归算法。我的算法很像和的公认答案 但这种解决方案对于大型集合无效。它需

我遇到了一个问题:有几组数字,我需要找到它们的所有组合,其中我只从每组中选择一个值。第一组中的第一个元素,第二组中的第二个元素,等等。例如:

Set1 - {1, 2, 3}
Set2 - {4, 5, 6, 7}
Set3 - {8, 9, 10}
结果应该是:

1, 4, 8
1, 4, 9
1, 4, 10
1, 5, 8
1, 5, 9
1, 5, 10
...
3, 7, 9
3, 7, 10
我写了一个简单的递归算法。我的算法很像和的公认答案

但这种解决方案对于大型集合无效。它需要大约size1*size2*size3的复杂度才能得到结果,对于大于100个元素的较大集合,它开始消耗大量CPU资源。是否有任何其他方法或途径可以找到所有的组合,这将更快地工作,并将是更大的集合的最佳选择

我在C++中编写了算法,但欢迎使用任何语言。 编辑:


我需要找到所有满足特定条件的组合,看起来像a>1&&B>2&&C>3。这意味着,如果集合A中至少有一个值大于1,集合B中至少有一个值大于2,集合C中至少有一个值大于3。

如果要枚举所有组合,显然需要与组合相同的迭代次数。不能低于size1*size2*…*sizeN。如果你想在所有组合的集合上计算一些东西,那么你应该这么说,因为确实有可能以较低的复杂度这样做,例如:计算组合的数量或求和它们的值。因此,当你的输出大小为size1*size2*size3时,为什么你希望有一个算法比它做得更好?这不是一个复杂度比size1*size2*…*sizeN更好的算法,因为这是结果集的大小。你能分享一下你打算用这些集合做什么吗?对于每个组合,我需要分别检查一个预定义的条件,如果条件满足,我需要执行一些操作,比如显示一条警告消息。你能分享条件吗,因为可能不必迭代所有集合,可能只生成所需的集合,而不是所有集合。