# -*- coding: utf-8 -*-
class Solution(object):
def combinationSum2(self, candidates, target):
"""
:type candidates: List[int]
:type target: int
:rtype: List[List[int]]
"""
self.result = []
candidates.sort()
for i in range(len(candidates)):
self.recursive_comb([candidates[i]], candidates[i + 1:], target)
return self.result
def recursive_comb(self,temp_array, rest_array, target):
if sum(temp_array) == target:
if temp_array not in self.result:
self.result.append(temp_array)
else:
for i in range(len(rest_array)):
temp_array2 = temp_array[:]
temp_array2.append(rest_array[i])
if sum(temp_array2) <= target:
self.recursive_comb(temp_array2, rest_array[i + 1:], target)
if __name__ == "__main__":
answer=Solution()
print answer.combinationSum2([10,1,2,7,6,1,5], 8)