fork download
  1. def subset_sum_recursive(numbers,target,partial):
  2. s = sum(partial)
  3.  
  4. #check if the partial sum is equals to target
  5. if s == target:
  6. if 9 in partial:
  7. if 18 in partial:
  8. if len(partial) == 8:
  9. print "sum(%s)=%s"%(partial,target)
  10. if s >= target:
  11. return # if we reach the number why bother to continue
  12.  
  13. for i in range(len(numbers)):
  14. n = numbers[i]
  15. remaining = numbers[i+1:]
  16. subset_sum_recursive(remaining,target,partial + [n])
  17.  
  18. def subset_sum(numbers,target):
  19. #we need an intermediate function to start the recursion.
  20. #the recursion start with an empty list as partial solution.
  21. subset_sum_recursive(numbers,target,list())
  22.  
  23. if __name__ == "__main__":
  24. subset_sum([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18],72)
Success #stdin #stdout 0.1s 4676KB
stdin
Standard input is empty
stdout
sum([2, 3, 4, 5, 9, 15, 16, 18])=72
sum([2, 3, 4, 6, 9, 14, 16, 18])=72
sum([2, 3, 4, 7, 9, 13, 16, 18])=72
sum([2, 3, 4, 7, 9, 14, 15, 18])=72
sum([2, 3, 4, 8, 9, 12, 16, 18])=72
sum([2, 3, 4, 8, 9, 13, 15, 18])=72
sum([2, 3, 4, 9, 10, 11, 15, 18])=72
sum([2, 3, 4, 9, 10, 12, 14, 18])=72
sum([2, 3, 4, 9, 11, 12, 13, 18])=72
sum([2, 3, 5, 6, 9, 13, 16, 18])=72
sum([2, 3, 5, 6, 9, 14, 15, 18])=72
sum([2, 3, 5, 7, 9, 12, 16, 18])=72
sum([2, 3, 5, 7, 9, 13, 15, 18])=72
sum([2, 3, 5, 8, 9, 11, 16, 18])=72
sum([2, 3, 5, 8, 9, 12, 15, 18])=72
sum([2, 3, 5, 8, 9, 13, 14, 18])=72
sum([2, 3, 5, 9, 10, 11, 14, 18])=72
sum([2, 3, 5, 9, 10, 12, 13, 18])=72
sum([2, 3, 6, 7, 9, 11, 16, 18])=72
sum([2, 3, 6, 7, 9, 12, 15, 18])=72
sum([2, 3, 6, 7, 9, 13, 14, 18])=72
sum([2, 3, 6, 8, 9, 10, 16, 18])=72
sum([2, 3, 6, 8, 9, 11, 15, 18])=72
sum([2, 3, 6, 8, 9, 12, 14, 18])=72
sum([2, 3, 6, 9, 10, 11, 13, 18])=72
sum([2, 3, 7, 8, 9, 10, 15, 18])=72
sum([2, 3, 7, 8, 9, 11, 14, 18])=72
sum([2, 3, 7, 8, 9, 12, 13, 18])=72
sum([2, 3, 7, 9, 10, 11, 12, 18])=72
sum([2, 4, 5, 6, 9, 12, 16, 18])=72
sum([2, 4, 5, 6, 9, 13, 15, 18])=72
sum([2, 4, 5, 7, 9, 11, 16, 18])=72
sum([2, 4, 5, 7, 9, 12, 15, 18])=72
sum([2, 4, 5, 7, 9, 13, 14, 18])=72
sum([2, 4, 5, 8, 9, 10, 16, 18])=72
sum([2, 4, 5, 8, 9, 11, 15, 18])=72
sum([2, 4, 5, 8, 9, 12, 14, 18])=72
sum([2, 4, 5, 9, 10, 11, 13, 18])=72
sum([2, 4, 6, 7, 9, 10, 16, 18])=72
sum([2, 4, 6, 7, 9, 11, 15, 18])=72
sum([2, 4, 6, 7, 9, 12, 14, 18])=72
sum([2, 4, 6, 8, 9, 10, 15, 18])=72
sum([2, 4, 6, 8, 9, 11, 14, 18])=72
sum([2, 4, 6, 8, 9, 12, 13, 18])=72
sum([2, 4, 6, 9, 10, 11, 12, 18])=72
sum([2, 4, 7, 8, 9, 10, 14, 18])=72
sum([2, 4, 7, 8, 9, 11, 13, 18])=72
sum([2, 5, 6, 7, 9, 10, 15, 18])=72
sum([2, 5, 6, 7, 9, 11, 14, 18])=72
sum([2, 5, 6, 7, 9, 12, 13, 18])=72
sum([2, 5, 6, 8, 9, 10, 14, 18])=72
sum([2, 5, 6, 8, 9, 11, 13, 18])=72
sum([2, 5, 7, 8, 9, 10, 13, 18])=72
sum([2, 5, 7, 8, 9, 11, 12, 18])=72
sum([2, 6, 7, 8, 9, 10, 12, 18])=72
sum([3, 4, 5, 6, 9, 11, 16, 18])=72
sum([3, 4, 5, 6, 9, 12, 15, 18])=72
sum([3, 4, 5, 6, 9, 13, 14, 18])=72
sum([3, 4, 5, 7, 9, 10, 16, 18])=72
sum([3, 4, 5, 7, 9, 11, 15, 18])=72
sum([3, 4, 5, 7, 9, 12, 14, 18])=72
sum([3, 4, 5, 8, 9, 10, 15, 18])=72
sum([3, 4, 5, 8, 9, 11, 14, 18])=72
sum([3, 4, 5, 8, 9, 12, 13, 18])=72
sum([3, 4, 5, 9, 10, 11, 12, 18])=72
sum([3, 4, 6, 7, 9, 10, 15, 18])=72
sum([3, 4, 6, 7, 9, 11, 14, 18])=72
sum([3, 4, 6, 7, 9, 12, 13, 18])=72
sum([3, 4, 6, 8, 9, 10, 14, 18])=72
sum([3, 4, 6, 8, 9, 11, 13, 18])=72
sum([3, 4, 7, 8, 9, 10, 13, 18])=72
sum([3, 4, 7, 8, 9, 11, 12, 18])=72
sum([3, 5, 6, 7, 8, 9, 16, 18])=72
sum([3, 5, 6, 7, 9, 10, 14, 18])=72
sum([3, 5, 6, 7, 9, 11, 13, 18])=72
sum([3, 5, 6, 8, 9, 10, 13, 18])=72
sum([3, 5, 6, 8, 9, 11, 12, 18])=72
sum([3, 5, 7, 8, 9, 10, 12, 18])=72
sum([3, 6, 7, 8, 9, 10, 11, 18])=72
sum([4, 5, 6, 7, 8, 9, 15, 18])=72
sum([4, 5, 6, 7, 9, 10, 13, 18])=72
sum([4, 5, 6, 7, 9, 11, 12, 18])=72
sum([4, 5, 6, 8, 9, 10, 12, 18])=72
sum([4, 5, 7, 8, 9, 10, 11, 18])=72