15 lines
484 B
Lua
15 lines
484 B
Lua
function sumt(t, start, last) return start <= last and t[start] + sumt(t, start+1, last) or 0 end
|
|
function maxsub(ary, idx)
|
|
local idx = idx or 1
|
|
if not ary[idx] then return {} end
|
|
local maxsum, last = 0, idx
|
|
for i = idx, #ary do
|
|
if sumt(ary, idx, i) > maxsum then maxsum, last = sumt(ary, idx, i), i end
|
|
end
|
|
local v = maxsub(ary, idx + 1)
|
|
if maxsum < sumt(v, 1, #v) then return v end
|
|
local ret = {}
|
|
for i = idx, last do ret[#ret+1] = ary[i] end
|
|
return ret
|
|
end
|