fork(1) download
  1. _sum=7
  2. _set=[1,1,2,3,4,6]
  3.  
  4. current_idx = 0
  5.  
  6. sum_mapping = [[-1 for i in range(len(_set) + 1)] for i in range(_sum)]
  7. max_sum = _set[current_idx]
  8. for i in range(0, _sum):
  9. current_sum = i + 1
  10. for j in [i for i in range(0, current_idx+1)][::-1] + \
  11. [i for i in range(current_idx + 1, len(_set))]:
  12. required_value = current_sum - _set[j]
  13. if required_value < 0:
  14. break
  15. if required_value == 0 or sum_mapping[required_value - 1][j] != -1:
  16. _j = j + 1
  17. sum_mapping[i][_j:] = [j]*(len(_set) - j)
  18. break
  19. if max_sum == current_sum:
  20. current_idx = current_idx + 1
  21. max_sum = max_sum + _set[current_idx]
  22.  
  23. _cur = sum_mapping[_sum-1][len(_set)]
  24.  
  25. if _cur != -1:
  26. _l_sum = _sum
  27. while _l_sum != 0:
  28. print(_set[_cur])
  29. _l_sum = _l_sum - _set[_cur]
  30. _cur = sum_mapping[_l_sum -1][len(_set)]
  31.  
Success #stdin #stdout 0.04s 9488KB
stdin
Standard input is empty
stdout
3
2
1
1