poj 2533 Longest Ordered Subsequence

来源:互联网 发布:2016淘宝运营教程下载 编辑:程序博客网 时间:2024/06/07 18:52

题目来源:POJ 2533

思路:
裸的最长严格上升子序列。

     动态转移方程:dp[j]=max(dp[i]+1,dp[j]),其中i<j,temp[i]<temp[j]

其中dp[j]是指以下标j元素为结尾的LIS的长度,temp数组存储的是整个序列。
#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#include <string.h>using namespace std;const int MAXN=1000+5;int temp[MAXN];int dp[MAXN];int main(){    int N;    scanf("%d",&N);    int i,j;    for(i=1;i<=N;++i)        scanf("%d",&temp[i]);    for(i=1;i<=N;++i)        dp[i]=1;    for(i=2;i<=N;++i)        for(j=1;j<i;++j)    {        if(temp[i]>temp[j])            dp[i]=max(dp[j]+1,dp[i]);    }    sort(dp+1,dp+1+N);    printf("%d\n",dp[N]);    return 0;}

原创粉丝点击