#coding:utf-8
'''
Created on 2017-9-24
@author: 刘帅
'''
def subsets(nums):
res = []
backtrack2(res,nums,[],0)
return res
def backtrack(res,nums,stack,pos):
if pos == len(nums):
res.append(list(stack))
else:
stack.append(nums[pos])
print nums[pos]
backtrack(res, nums, stack, pos + 1)
stack.pop()
backtrack(res, nums, stack, pos + 1)
# simplified backtrack
def backtrack2(res, nums, cur, pos):
if pos >= len(nums):
res.append(cur)
else:
backtrack2(res, nums, cur+[nums[pos]], pos+1)
backtrack2(res, nums, cur, pos+1)
# Iteratively
def subsets2(self, nums):
res = [[]]
for num in sorted(nums):
res += [item+[num] for item in res]
return res
test = [1,2,3]
print(test)
print(subsets(test))
subsets
最新推荐文章于 2020-07-19 17:24:31 发布