17 lines
459 B
OCaml
17 lines
459 B
OCaml
let maxsubseq =
|
|
let rec loop sum seq maxsum maxseq = function
|
|
| [] -> maxsum, List.rev maxseq
|
|
| x::xs ->
|
|
let sum = sum + x
|
|
and seq = x :: seq in
|
|
if sum < 0 then
|
|
loop 0 [] maxsum maxseq xs
|
|
else if sum > maxsum then
|
|
loop sum seq sum seq xs
|
|
else
|
|
loop sum seq maxsum maxseq xs
|
|
in
|
|
loop 0 [] 0 []
|
|
|
|
let _ =
|
|
maxsubseq [-1 ; -2 ; 3 ; 5 ; 6 ; -2 ; -1 ; 4; -4 ; 2 ; -1]
|