Bidirectional Subsequence - 双向子序列
问题
递减子序列和递增子序列的概念相同,但渐变方向相反,递减子序列的元素之间依次递减。
在长度为的序列中寻找元素,使得的最长递增子序列和的最长递减子序列,求两段子序列的长度的最大之和。
解法
设是以作为最右边元素的最长递增子序列的长度,是以作为最左边元素的最长递减子序列的长度。的状态转移方程见。
最后返回(),即所有中的最大值,之所以减去是因为最右边的元素和最左边的元素是同一个元素,重复了因此长度减。该算法的时间复杂度为。