一个数的序列bi,当b1<b2<...<bs的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,...,an),我们可以得到一些上升的子序列(ai1,ai2,...,aik),这里1≤i1<i2<...<ik≤n。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列中最长的长度是4,比如子序列(1,3,5,8)。 你的任务,就是对于给定的序列,求出最长上升子序列的长度。
时间: 2023-04-16 15:04:20 浏览: 196
最长上升子序列
题目描述:给定一个序列,求其最长上升子序列的长度。
解题思路:动态规划
设dp[i]表示以第i个数结尾的最长上升子序列的长度,则有:
dp[i] = max{dp[j]+1} (1<=j<i, aj<ai)
即在前i-1个数中,找到一个数j,使得aj<ai,并且dp[j]+1最大,那么dp[i]就等于dp[j]+1。
最终的答案就是dp数组中的最大值。
时间复杂度:O(n^2)
代码实现:
阅读全文