我编写了以下代码来查找具有最大总和的连续子数组,我觉得这很丑:
问题是我内心对这个问题的思考(使用DP)势在必行。我如何重构这段代码并使其更具功能性(和 DRY)?关于如何用函数式语言思考算法的任何建议?(也许应该是一个单独的问题)。
class Object
def sum(lst)
lst.reduce(:+)
end
end
def dp_max_subarray(lst)
i=0
s=0
while i<lst.length
(i...lst.length).each do |j|
t = sum lst[i..j]
if t > s
s= sum lst[i..j]
next
elsif t < 0
i=j+1
break
end
end
i+=1
end
s
end