A late late entry (I was busy yesterday).
Yes it does an exhaustive search, but for even moderate sized sets,
it's feasibly fast enough.
class Array
def sum()
s=0
each{|i| s+=i}
s
end
end
array=[-6,-5,-4,-3,-2,-1,0,1,2,3,-5,4,5,6]
maxIndex = array.length-1
sizeByRange = {}
0.upto(maxIndex) do
|start|
start.upto(maxIndex) do
|endI|
sizeByRange.store(array[start..endI].sum,start..endI)
#puts "subarray #{start} to #{endI} sums to #{array[start..endI].sum}"
end
end
puts "Minimum array is [#{array[sizeByRange.min[1]].join(',')}]"
puts "Maximum array is [#{array[sizeByRange.max[1]].join(',')}]"