38得票11回答
生成所有的五张扑克牌手牌

这个问题乍一看似乎很简单,但实际上比看起来复杂得多。目前我还被困住了。 从52张扑克牌中选择5张牌的方法有52c5 = 2,598,960种。然而,在扑克中,由于花色是可互换的,其中许多手牌是等价的 - 如2H 2C 3H 3S 4D等同于2D 2S 3D 3C 4H - 只需交换花色即可。...

38得票8回答
获取PHP数组的所有排列组合?

给定一个 PHP 字符串数组,例如:['peter', 'paul', 'mary'] 如何生成该数组元素的所有可能排列?例如:peter-paul-mary peter-mary-paul paul-peter-mary paul-mary-peter mary-peter-paul mar...

37得票23回答
编码高尔夫:生成帕斯卡三角形

用尽可能少的代码生成大小为N的 Pascal三角形 的列表(或者打印,我不介意!)这是我用Python 2.6和一个技巧尝试的结果(只需118个字符):c,z,k=locals,[0],'_[1]' p=lambda n:[len(c()[k])and map(sum,zip(z+c()[k]...

34得票2回答
从一个数组中获取大小为n的所有组合的算法(Java)?

现在我正在尝试编写一个函数,它接受一个数组和一个整数n,并给出每个大小为n的组合列表(即int数组的列表)。我可以使用n个嵌套循环编写它,但这仅适用于特定大小的子集。我无法想出如何将其推广为适用于任何组合大小的算法。我认为我需要使用递归?以下是所有3个元素组合的代码,我需要一个适用于任意数量元...

34得票5回答
生成所有可能的向量元素组合(笛卡尔积)。

我想生成给定数量的向量元素的所有可能组合。 例如,对于[1 2],[1 2]和[4 5],我想要生成元素: [1 1 4; 1 1 5; 1 2 4; 1 2 5; 2 1 4; 2 1 5; 2 2 4; 2 2 5] 问题在于我不知道需要计算组合的向量数量。它可能是3,就像这种情况一...

33得票5回答
长度为x的二进制序列的所有排列组合

我想找到一种干净聪明的方式(用 Python),以找到长度为 x 的由 1 和 0 组成的所有字符串的排列。理想情况下,这应该是快速的,不需要进行太多次迭代... 因此,对于 x = 1,我希望得到: ['0','1'] x =2 ['00','01','10','11'] 等等... ...

31得票1回答
`scipy.misc.comb`是否比自行编写的二项式计算更快?

现在确定了 scipy.misc.comb 比自定义实现更快吗? 根据一个旧答案 Statistics: combinations in Python,当计算组合数 nCr 时,这个自制函数比 scipy.misc.comb 更快: def choose(n, k): """ ...

31得票10回答
算法:确定从一个序列中删除一组值的所有可能方法

我正试图确定从序列中删除一组值的不同方式,使原始序列保持有序(稳定),并确保仅从原始序列中每个实例值中删除1个。例如,如果我有[1,2,1,3,1,4,4],并且我想删除[1,4,4],则我得到的组合将是: [1,2,1,3,1,4,4] \ [1,4,4] = [ [2,1,3,1], [...

31得票11回答
计算组合数量

您好, 我知道您可以使用以下公式(不考虑重复且顺序不重要)获取组合数: //从n个物品中选r个 n! / r!(n - r)! 但是,我不知道如何在C++中实现它,因为例如: n = 52 n! = 8,0658175170943878571660636856404e+67 即使...

31得票6回答
Secret Santa - 生成“有效”的排列

我的朋友邀请我去玩“暗恋者”游戏,我们需要抽签并扮演一个朋友的“圣诞老人”的角色。我们把我们所有人的名字写下来,然后随机抽取一个名字,如果有人抽到自己的名字,我们就要重新洗牌再次抽签。我们有七个人参加,我认为最终的“圣诞老人分配”是将(1:7)的排列映射到自身的某些限制条件下。我希望能够提出各...