找出一个集合的子集

利用递归的思想,用python的set方法完成,找到每次去掉一个元素的所有子集,再加上集合本身

代码如下

def find_subset(set_of_nb):
    if not set_of_nb:
        return
    return sorted(_find_subset(set_of_nb), key = lambda x: (len(x),x))

def _find_subset(set_of_nb):
    if len(set_of_nb) == 1:
        return [set(), set_of_nb]
    subset = []
    for i in set_of_nb:
        subset_1 = _find_subset(set_of_nb - {i})
        for j in subset_1:
            if j not in subset:
                subset = subset + [j]
    return subset + [set_of_nb]

猜你喜欢

转载自www.cnblogs.com/AcodingDg/p/9107683.html