【发布时间】:2014-07-03 07:08:09
【问题描述】:
我正在尝试经典的最大子数组问题。我正在输出正确的数组,但我希望它的格式不同。这是我的代码:
def max_subarray(input)
return input if input.length == 1
max = 0
subarrays = []
input.each do |element|
current_subarray = []
if max + element > element
current_subarray << subarrays[-1]
current_subarray << element
subarrays << current_subarray
max += element
else
subarrays << [element]
max = element
end
end
subarrays.each do |s|
print s
puts ''
end
end
max_subarray([-2, -3, 4, -1, -2, 1, 5, -3])
这给了我以下输出:
[-2]
[-3]
[4]
[[4], -1]
[[[4], -1], -2]
[[[[4], -1], -2], 1]
[[[[[4], -1], -2], 1], 5]
[[[[[[4], -1], -2], 1], 5], -3]
虽然这些是我想要的数字,但我希望它们成为每一行的一个数组。不是嵌套数组。有什么想法吗?
谢谢,
附言一旦我把这部分写下来,找到一个总和最大的部分是一小步。
【问题讨论】:
标签: ruby algorithm computer-science arrays