最长上升子序列
概念 维基百科->Longest Increasing Subsequence
算法一:动态规划
数据定义:
a[] : 输入序列
d[] : 保存最长升序子序列的子问题。
d[i] 表示以a[i]结尾的最长子序列的长度。
d[]初始化为1。因为子序列最短也是1。
n : a 和 d的长度
状态转移方程:
d[0] = 1 当i = 0
d[i] = 1 + max{d[j], a[i] > a[j] && 0 <= j < i) 当0<i<n
注解:在序列a[0],a[1],a[2],...,a[i-1]中找到最长的一个上升子序列,并且a[i]可以添加在它的末尾,使成为一个更长的上升子序列