Home > Software engineering >  Find the increasing subsequence of length within given range with maximum sum
Find the increasing subsequence of length within given range with maximum sum

Time:05-01

Given an array of positive and unique integers, I am trying to write an algorithm which returns an increasing subsequence that:

(1) has length within given bounds L and H, L <= length <= H, and

(2) has the maximum sum

I know that I should be using dynamic programming for this and I have an understanding how I would solve a similar problem to find a subsequence with maximum sum but unsure how to fit in the constraint of the subsequence min and max length. What is the algorithm or pseudocode for how I can solve this using dynamic programming?

CodePudding user response:

Seems two-pointers approach should work here

Set left and right indices into 0

Move right index while A[right 1]>A[right] and right-left < H

If you meet decrease, jump left index into the right position and start moving right again.

If length reaches H-L, start move left pointer together with right one (note left..right range is always sorted)

CodePudding user response:

I would iterate the positions i of the array, and define s[i] as the sum of up to H increasing elements e[i] < e[i 1] < ... if there are at least L such elements, and 0 otherwise. Then you only need to maximize s[i].

  • Related