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)

    {

        for(i=0;i<n;i++)

            {

                scanf("%d",&num[i]);

                dp[i]=1;

            }

        int maxx=1; //小细节 这里maxx需要初始化为 1 如果 为 0 当n=1时 输出为 0 

        for(i=n-2;i>=0;i--)

        {

            //int tmax=0;

            for(j=i+1;j<n;j++)

            {

                if(num[j]>num[i]&&dp[j]+1>dp[i]) dp[i]=dp[j]+1;

            }

            if(dp[i]>maxx) maxx=dp[i];

        }

        printf("%d\n",maxx);

    }

    return 0;

}

 

你可能感兴趣的:(sequence)