Как уменьшить дублирующиеся выходы в Ruby? - PullRequest
0 голосов
/ 28 сентября 2018

В настоящее время я пишу код с Ruby, чтобы узнать все возможные комбинации чисел, которые равны сумме.Однако я сталкиваюсь с проблемой TLE, и не все комбинации выходят.В результате появилось много дублирующихся комбинаций, таких как:

sum([39,39,119,79,89,79,79,38,19,127.5,77,29,39,39,40,39,39])= 1009.5
sum([39,39,119,79,89,79,79,38,19,127.5,29,39,77,39,39,40,39])= 1009.5 

Надеюсь, кто-нибудь может научить меня изменять мой код, чтобы уменьшить количество дублирующихся выходных данных, и, возможно, это поможет решить проблему TLE. Спасибо.Мой код:

def subset_sum(numbers,target,partial=[])            
  s = partial.inject 0, :+
  puts "sum(#{partial})=#{target}" if s == target

  return if s >= target 

  (0..(numbers.length - 1)).each do |i|
    n = numbers[i]
    remaining = numbers.drop(i+1)
    subset_sum(remaining ,target ,partial +[n]) 
  end 
end


 > subset_sum([19,19,19,39,29,40,38,39,39,39,39,39,79,59,119,119,79,129,129,78,139,69.5,89,77,79,128,98,109,109,138,127.5,119,108,148,118],1009.5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...