POJ 2533 Longest Ordered Subsequence (DP最长上升子序列)

题目的大意是:给出一序列,求出该序列的最长上升子序列的最大长度。

思路:

a: 1 7 3 5 9 4 8

dp: 1 2 2 3 4 3 4

#include <iostream>
#include <cstring>

using namespace std;

const int MAXN = 1005;

int main()
{
    int n;
    while( cin>>n )
    {
        int a[MAXN], dp[MAXN];
        int i, j;
        int ans=1;
        for( i=1; i<=n; ++i )
            cin >> a[i];

        memset( dp, 0, sizeof(dp) );

        for( i=2; i<=n; ++i)
        {
            for( j=1; j<i; ++j)
            {
                if(a[i]>a[j])
                    dp[i]=max(dp[j]+1, dp[i]);
            }
            ans=max(ans, dp[i]+1);
        }

        cout<<ans<<endl;
    }
    return 0;
}
时间: 2024-10-13 05:29:26

POJ 2533 Longest Ordered Subsequence (DP最长上升子序列)的相关文章

POJ 2533 Longest Ordered Subsequence【最长递增子序列】【DP思想】

Longest Ordered Subsequence Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Total Submission(s) : 6   Accepted Submission(s) : 1 Problem Description A numeric sequence of ai is ordered ifa1 < a2 < ... < aN. Let t

POJ 2533 - Longest Ordered Subsequence(最长上升子序列) 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接:http://poj.org/problem?id=2533 Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given numeric sequence (a1, a2, ..., aN) be any sequence (ai1, ai2, ..., aiK)

POJ 2533 Longest Ordered Subsequence(最长上升子序列(NlogN)

传送门 Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given numeric sequence (a1, a2, ..., aN) be any sequence (ai1, ai2, ..., aiK), where 1 <= i1 < i2 < ... < iK <= N. For example, s

POJ 2533 Longest Ordered Subsequence(LIS:最长上升子序列)

http://poj.org/problem?id=2533 题意: 给你一个长度为n的数字序列, 要你求该序列中的最长(严格)上升子序列的长度. 分析: 解法一: O(n^2)复杂度. 令dp[i]==x 表示以第i个数字结尾的上升子序列中最长的为x长度. 初始化: dp[0]=0且dp[i]=1 i>=1时. 状态转移: dp[i] =max( dp[j]+1 ) 其中j<i 且a[j]<a[i]. 最终所求:max(dp[i])  其中1<=i<=n. 解法二: O(n

poj 2533 Longest Ordered Subsequence(最长上升子序列)

http://poj.org/problem?id=2533 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int num[1000+100]; int dp[1000+100]; int main() { int n; int i,j; while(scanf("%d",&n)!=EOF

[2016-04-01][poj][2533][Longest Ordered Subsequence]

时间:2016-04-01 21:35:02 星期五 题目编号:[2016-04-01][poj][2533][Longest Ordered Subsequence] #include <cstdio> #include <algorithm> using namespace std; int dp[1000 + 10],a[1000 + 10]; int main(){ int n; while(~scanf("%d",&n)){ for(int i

POJ 2533 Longest Ordered Subsequence

题目链接:http://poj.org/problem?id=2533 Longest Ordered Subsequence Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 35605   Accepted: 15621 Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the

POJ 2533 Longest Ordered Subsequence(裸LIS)

传送门: http://poj.org/problem?id=2533 Longest Ordered Subsequence Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 61731   Accepted: 27632 Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the

poj-2533 Longest Ordered Subsequence 【最长上升子序列】

题目链接:http://poj.org/problem?id=2533 Longest Ordered Subsequence Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 35929   Accepted: 15778 Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the

POJ 2533 Longest Ordered Subsequence(DP 最长上升子序列)

Longest Ordered Subsequence Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 38980   Accepted: 17119 Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given numeric sequence (a1, a2, ...