fork download
  1. def tsum(currentSum,total,input,record,n):
  2. if total == N :
  3. for i in range(0,n):
  4. if record[i]:
  5. print input[i]
  6.  
  7. i = i+1
  8. for i in range(i,n):
  9. if record[i]:
  10. print input[i]
  11. print ""
  12. return
  13. i=currentSum
  14. for i in range(i,n):
  15. if total+input[i]>sum :
  16. continue
  17. if i>0 and input[i]==input[i-1] and not record[i-1] :
  18. continue
  19. record[i]=1
  20. tsum(i+1,total+input[i],input,record,l)
  21. record[i]=0
  22.  
  23. record = []
  24. N = 5
  25. input = [3, 2, 2, 1, 1]
  26. temp = list(set(input))
  27. newlist = input
  28. for i in range(0, len(list(set(input)))):
  29. val = N/temp[i]
  30. for j in range(0, val-input.count(temp[i])):
  31. newlist.append(temp[i])
  32.  
  33. l = len(input)
  34.  
  35. for i in range(0,l):
  36. record.append(0)
  37. print "all possibilities to get N using values from a given set:"
  38. output = []
  39. tsum(0,0,input,record,l)
Success #stdin #stdout 0.01s 7728KB
stdin
Standard input is empty
stdout
all possibilities to get N using values from a given set:
3
2

3
1
1

2
2
1

2
1
1
1

1
1
1
1
1