组合生成与数量计算(Combinaton generator and counter),,[Python]代码Py


[Python]代码

Python语言: 组合生成与数量计算(Combinaton generator and counter)#组合生成函数(Combination Generation)#len( CG(7, 3) ) == 7*6*5/3*2*1def CG(n, m):    assert m >= 1    if m == 1:        for i in range(n):            yield [i]    else:        for v in CG(n, m-1):            for i in range(v[-1]+1, n):                yield v + [i]#Non-generator version by SpellScroll.comdef CG2(n, m):    """    Return the list of all possible sets of m elements from an n-set,    modified from the generator version at http://fayaa.com/code/view/450/    """    if m == 1: # assert m >= 1        return [[i] for i in range(n)]    else:        return [v + [i] for v in CG(n, m-1) for i in range(v[-1]+1, n)]#组合C(n, m)的大小, Combination Countdef CC(n, m):  mul=1  div=1  for i in range(1, m+1):    mul *= (n-i+1)    div *= i  return mul/div

评论关闭