最长上升子序列

 

 

/*最长上升子序列*/
/*
输入:
5
4 2 3 1 5
输出:
3
*/
#include<iostream>
#define MAX_N 100
#define max(x, y) x>y?x:y

using namespace std;

int n;
int a[MAX_N];
int dp[MAX_N];

void LIS()
{
    int res = 1;
    for(int i = 0; i < n; i++)
    {
        dp[i] = 1;
        for(int j = 0; j < i; j++) 
            if(a[j] < a[i])
            {
                dp[i] = max(dp[i], dp[j] + 1);
            }
            res = max(dp[i], res);
    }
    cout<<res<<endl;
}

int main()
{
    cin>>n;
    for(int i = 0; i < n; i++) cin>>a[i];

    LIS();

    system("PAUSE");
    return 0;
}

 

posted @ 2013-11-25 20:47  偶尔会寂寞  阅读(122)  评论(0编辑  收藏  举报