POJ 2533 Longest Ordered Subsequence

来源:互联网 发布:面料常见花纹知乎 编辑:程序博客网 时间:2024/05/22 01:08

最长上升子序列问题,dp[i]表示以第i个数结尾的上升子序列长度。

那么dp[j] = max{dp[i] + 1},只要a[j] > a[i],i < j

根据dp数组的定义,整个数组都初始化为1

最后找出dp数组的最大值即可

代码如下:

#include<iostream>using namespace std;int a[1010], dp[1010];int main(){int n;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];dp[i] = 1;}for (int i = 2; i <= n; i++) {for (int j = 1; j < i; j++) {if (a[j] < a[i] && dp[i] < dp[j] + 1)dp[i] = dp[j] + 1;}}int ans = dp[1];for (int i = 2; i <= n; i++)if (ans < dp[i])ans = dp[i];cout << ans << endl;return 0;}

0 0