How to resolve the algorithm Greatest subsequential sum step by step in the F# programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Greatest subsequential sum step by step in the F# programming language
Table of Contents
Problem Statement
Given a sequence of integers, find a continuous subsequence which maximizes the sum of its elements, that is, the elements of no other single subsequence add up to a value larger than this one.
An empty subsequence is considered to have the sum of 0; thus if all elements are negative, the result must be the empty sequence.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Greatest subsequential sum step by step in the F# programming language
Source code in the fsharp programming language
let maxsubseq s =
let (_, _, maxsum, maxseq) =
List.fold (fun (sum, seq, maxsum, maxseq) x ->
let (sum, seq) = (sum + x, x :: seq)
if sum < 0 then (0, [], maxsum, maxseq)
else if sum > maxsum then (sum, seq, sum, seq)
else (sum, seq, maxsum, maxseq))
(0, [], 0, []) s
List.rev maxseq
printfn "%A" (maxsubseq [-1 ; -2 ; 3 ; 5 ; 6 ; -2 ; -1 ; 4; -4 ; 2 ; -1])
You may also check:How to resolve the algorithm Echo server step by step in the C# programming language
You may also check:How to resolve the algorithm Closures/Value capture step by step in the C++ programming language
You may also check:How to resolve the algorithm Permutations step by step in the Erlang programming language
You may also check:How to resolve the algorithm Sparkline in unicode step by step in the Clojure programming language
You may also check:How to resolve the algorithm Last Friday of each month step by step in the Raku programming language