现在的位置: 首页 > 综合 > 正文

动态规划–最长单调递增子序列

2013年07月08日 ⁄ 综合 ⁄ 共 2999字 ⁄ 字号 评论关闭

问题:找出一个n个数的序列X中最长的单调递增子序列。

分析1:
这里描述一个O(n^2)的算法,令c[i]表示:在a[0->i]中,当以a[i]为单调递增子序列最后一个元素时,所得最长单调递增子序列的长度。所以,我们可以得到递推式:

 

代码:

 


 

 

分析2:
这里描述一个O(n*log(n))的算法,令c[i]代表:长度为i的单调递增子序列的最后一个元素在X中的位置。当一个新元素进来,生成新的长度为i的单调递增序列时,会覆盖掉c[i],从而保证c[i]尽量小。

 

代码:

 

抱歉!评论已关闭.