POJ 2533 Longest Ordered Subsequence

来源:互联网 发布:天敏网络机顶盒价格 编辑:程序博客网 时间:2024/06/03 17:54

题目链接:http://poj.org/problem?id=2533

最长上升子序列,经典题目。

以dp[i]表示以a[i]为序列结尾的最长上升子序列长度

则 递推方程:dp[i] = max(dp[k]+1)  for everya[k]<a[i] && k<i

代码:

#include <iostream>#include <cstdio>using namespace std;int max(int a,int b){    return a>b?a:b;}int num[1111];int dp[1111];int main(){    int n;    int ans=0;    scanf("%d",&n);    for(int i=0;i<n;i++)        scanf("%d",&num[i]);    for(int i=0;i<=n;i++)    {        dp[i]=1;        for(int j=0;j<i;j++)        {            if(num[j]<num[i])            {                dp[i]=max(dp[i],dp[j]+1);            }        }        ans=max(ans,max(dp[i],dp[i-1]));    }    printf("%d\n",ans);    return 0;}


0 0
原创粉丝点击