全排列、全组合

1. \(全排列C_{m}^{n}\)的实现

【要求】输入m,n, 输出所有可能的索引组合

def cmn(m, n):
    if n ==1:
        return [[i] for i in range(1, m+1)]
    elif m==n:
        return [ list(range(1, m+1)) ]
    else:
        temp1 = cmn(m-1, n)
        temp2 = [ i+[m] for i in cmn(m-1, n-1)]
        return temp1 + temp2
    
if __name__ == '__main__':
    print( cmn(4, 3) )

2. 全部子集

def subsets(aim):
    if len(aim) == 1:
        return [aim]
    result = subsets(aim[1:])
    return result + [[aim[0]] + s for s in result]

猜你喜欢

转载自www.cnblogs.com/geoffreyone/p/11608867.html