POJ 2533 Longest Ordered Subsequence C++版
题目链接:http://poj.org/problem?id=1079
最长上升子串,利用动态规划解题。
对于给定数列E,元素个数为n,最长上升子序列Q满足对任意1<=i<j<=n,有Q[i]<Q[j],且E[i]<E[j]。
容易得出O(n^2)的DP递推公式:
D[i]=max{D[j]}+1;(1<=j<i且E[j]<E[i])
D[i]为以元素i结尾的最长子序列个数。
这样经过两重循环一次遍历可以得到最长上升子序列。
代码如下:
1 | /*Problem: 2533 User: awq123 |