exponential complexity DEMO

来源:互联网 发布:加工中心编程软件app 编辑:程序博客网 时间:2024/06/01 09:00
#quote from MIT 'introduction to computation and programming using python, Revised'def getBinaryRep(n, numDigits):    """Assumes n and numDigits are non-negative ints       Returns a numDigits str that is a binary       representation of n"""    result = ''    while n > 0:        result = str(n%2) + result        n = n//2    if len(result) > numDigits:        raise ValueError('not enough digits')    for i in range(numDigits -len(result)):        result = '0' + result    return result    def genPowerset(L):    """Assumes L is a list       Returns a list of lists that contains all possible       combinations of the elements of L. E.g., if       L is [1, 2] it will return a list with elements       [], [1], [2], and [1, 2]."""    powerset = []    for i in range(0, 2**len(L)):        binStr = getBinaryRep(i, len(L))        subset = []        for j in range(len(L)):            if binStr[j] == '1':                subset.append(L[j])        powerset.append(subset)    return powerset


L = ['a', 'b', 'c']


genPowerset(L)
Out[113]: [[], ['c'], ['b'], ['b', 'c'], ['a'], ['a', 'c'], ['a', 'b'], ['a', 'b', 'c']]


0 0