python 排列组合算法

发布时间:2019-09-08 09:12:35编辑:auto阅读(2276)

    def c(n,m,out):
    if(m==0):
       return 1
    x=n
    while x>=m:
       out.append(x)
       if(c(x-1,m-1,out)):
        print out
       out.pop()
       x-=1
    return 0
    c(10,8,out=[])

    def permutation(listobj, length):
    assert listobj != None and 0 < length <= len(listobj)
    if(length == 1):
       return [ [x] for x in listobj ]
    result = []
    for i in range(len(listobj)):
       cp = list(listobj)
       cur = cp[i]
       del cp[i]
       result.extend( [cur] + x for x in permutation(cp, length-1) )
    return result

    n个取m个数的组合数问题

关键字