最长上升子序列就是求:给定的一串数字中 找出不断上升的最长那一串(该串不一定相连,只保证递增即可)。就比如下面这个例子 其最长上升子序列为2 3 4 7或2 3 4 6 数串长度为4 那么具体怎么求的呢
我们拿一个最简单的例子讲:
【题目描述】
给定N个数,求这N个数的最长上升子序列的长度。
【样例输入】
7
2 5 3 4 1 7 6
【样例输出】
4
一、朴素算法 (复杂度O(n^2))
dp[i]表示从0~i的以a[i]结尾的最大上升子序列长度,而以a[i]结尾的最长上升子序列有两种:1.只包含a[i]的子序列(即为其自身长度dp[i]=1); 2.在满足j<i且a[j]<a[i]的以a[j]为结尾的上升子序列末尾,追加上a[i]得到的子序列(即dp[i]=a[j]+1)。

最低0.47元/天 解锁文章
652

被折叠的 条评论
为什么被折叠?



