利用递归的思想,用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]