求数组中最长递增子序列

来源:互联网 发布:触屏软件 编辑:程序博客网 时间:2024/05/16 12:27

《编程之美》中题目,求数组中最长递增子序列。方法二中有个定义是让人一下子接受不了的:长度为N的递增子序列最大元素的最小值为MaxV[1]。什么叫做最大元素的最小值?解释如下:

如下序列:4,2,3。这是最简单的一种情况,在遍历到2的时候,最长的两个子序列是(4)和(2),两个序列的长度均为1,那么当3到来的时候,形成了两个序列(4,3)和(2,3)。对于这两个子序列,当然我们只能选择(2,3)了。那么什么叫做长度为N的递增子序列最大元素的最小值?在插入3之前,我们有两个长度为1的递增子序列(4)和(2),这两个递增子序列的最大值分别是4和2,那么4和2中相对小的是2,因此在结构MaxV[1]中应该存储的值是2。一定要这样的,因为这样一来,当下一个插入的值是介于两个子序列最大值们的中间值(2<3<4)时,显然当前一子序列的最大值较小时会产生下一个更大的递增子序列(2,3)。

原创粉丝点击