首页 > 解决方案 > 如何减少 Ruby 中的重复输出?

问题描述

目前,我正在用 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)

标签: ruby

解决方案


推荐阅读