我正在使用一种蛮力的方法来尝试找到谜题扩展的组合。

我试图获取大量组合,然后测试每个组合以查看它们是否符合特定条件。
我使用Python出色的itertools生成了组合,从本质上讲,这给了我一个迭代器,我可以对其进行测试。

这很快返回,并给我91390个组合来检查:

itertools.combinations(range(1, 40), 4)


这花了几分钟,然后给我198792594组合进行测试:

itertools.combinations(range(1, 122), 5)


当我进入下一个级别时,我需要以下答案:

itertools.combinations(range(1, 365), 6)


当我进入一组364的6路组合时...需要花费很长时间。年龄。我本质上是在要求很多组合吗?它如何缩放?

最佳答案

您可以这样计算这些数字:


前往google.com
输入“ 40选择4”
输入“ 121选择5”
输入“ 364 choose 6


有关实际公式,请参见wikipedia

它像阶乘函数一样缩放。

关于python - itertools.combinations在Python中如何缩放?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7942026/

10-12 22:44