问题描述:对于给定的一组数据,从中选取几个数,进行组合,求取一共有多少种组合的方法,并输出每种组合
从这里看来,解决这个问题并不困难,但当你数据量过大的时候,用常见的方法再去解决便行不通
如果数据量小则可以采用以下python自带的函数
有兴趣的可以自行了解排列以及涉及的itertools模块
import itertools
print(list(itertools.combinations([1,2,3,4],3))) # 表示从 [1,2,3,4] 中选出 3个元素的组合情况
组合的定义:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示
公式如下:
C(n,m) = n!/(m!*(n-m)!) (n>=m)
这里我将用二进制求组合数,比起递归更加高效
def