我想写一个函数,它将一个字母数组作为参数,并选择一些字母.
假设您提供了8个字母的数组,并希望从中选择3个字母.然后你应该得到:
8! / ((8 - 3)! * 3!) = 56
Run Code Online (Sandbox Code Playgroud)
数组(或单词)返回,每个包含3个字母.
假设我有一个包含6个球(3个白色和3个黑色)的包.我想找到给定长度的所有可能子集,忽略顺序.在上面的例子中,我只能从包中抽出3个球组合:
我已经用我选择的语言找到了一个完全符合这个标准的库,但我觉得它对于更多的数字来说很慢.例如,对于包含15个白色,1个黑色,1个蓝色,1个红色,1个黄色和1个绿色的袋子,仅有32个10个球的组合,但产生结果需要30秒.
有没有一种有效的算法可以找到我自己可以实现的所有组合?也许这个问题并不像我最初想的那样微不足道......
注意:我甚至不确定用正确的技术词来表达这一点,所以请随意纠正我的帖子的标题.
让我们说,一个有8个参与者的课程,我必须以所有可能的方式输出前3个位置.例如:
123 124 125 126 127 128 213等等..
我知道有next_permutation
算法,但它返回所有可能的permations与所有数字(从1到8),但我需要前三个地方与所有参与者ex:
1 2 3 4 5 6 7 8
1 2 3 4 5 6 8 7
Run Code Online (Sandbox Code Playgroud)