Python 利用增量穷举法思路生成幂集

Python 利用增量穷举法思路生成幂集

  采用增量穷举法求解a~c的幂集:
  (1)产生一个空列表添加到ps中,即ps=[[]]
  (2)在步骤(1)得到的ps的每一个集合元素的末尾添加’a’构成新列表元素[‘a’],将其添加到ps中,即ps=[[],['a']]
  (3)在步骤(2)得到的ps的每一个集合元素的末尾添加’b’构成新列表元素[‘b’],[‘a’,‘b’],将其添加到ps中,即ps=[[],['a'],['b'],['a','b']]
  (4)在步骤(3)得到的ps的每一个集合元素的末尾添加’c’构成新列表元素[‘c’],[‘a’,‘c’],[‘b’,‘c’],[‘a’,‘b’,‘c’],将其添加到ps中,即ps=[[],['a'],['b'],['c'],['a','b'],['a','c'],['b','c'],['a','b','c']]
  最后的ps构成a~c的幂集。
  以下是Python代码:

"""生成幂集"""
ob=['a','b','c']   # 要生成幂集的列表
def insertnum(p,si):   # 利用以下两个函数计算出背包所有幂集
    p1=p.copy()
    for s in p1:
        s1=s.copy()
        s1.insert(len(s1),si)
        p.append(s1)
    return ps
def pSet(s,i,ps):
    if i!=len(s):
        ps=insertnum(ps,s[i])
        pSet(s,i+1,ps)
ps=[[]]  # 存放幂集的列表
pSet(ob,0,ps)

运行结果:

[[], ['a'], ['b'], ['a', 'b'], ['c'], ['a', 'c'], ['b', 'c'], ['a', 'b', 'c']]

你可能感兴趣的:(Python,数据结构与算法,python,算法,数据结构)