非空子集
2018-08-26 本文已影响0人
正在努力ing
请编写一个方法,返回某集合的所有非空子集。
给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异。各子集内部从大到小排序,子集之间字典逆序排序,见样例。
测试样例:
[123,456,789]
返回:{[789,456,123],[789,456],[789,123],[789],[456 123],[456],[123]}
方法一:
class Subset:
# 返回二维[[],[],[]]
def getSubsets(self, A, n):
# write code here
A.sort(reverse=True)
self.result = []
self.getS(A,n,[])
return self.result
def getS(self,A,n,buff):
buff1 = [v for v in buff]
buff1.append(A[-n])
if n == 1:
self.result.append(buff1)
if buff:
self.result.append(buff)
return
self.getS(A,n-1,buff1)
self.getS(A,n-1,buff)