| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 33943 | Accepted: 14871 | 
Description
Input
Output
Sample Input
7 1 7 3 5 9 4 8
Sample Output
4
Source
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int a[12000] , dp[12000] ;
int main()
{
    int i , j , n , max1 ;
    while(scanf("%d", &n)!=EOF)
    {
        memset(dp,0,sizeof(dp));
        a[0] = -1 ;
        for(i = 1 ; i <= n ; i++)
            scanf("%d", &a[i]);
        for(i = 1 ; i <= n ; i++)
            for(j = 0 ; j < i ; j++)
                if( a[j] < a[i] && dp[j]+1 > dp[i] )
                    dp[i] = dp[j] + 1 ;
        max1 = 0 ;
        for(i = 1 ; i <= n ; i++)
            max1 = max(max1,dp[i]);
        printf("%d\n", max1);
    }
    return 0;
}
poj2533--Longest Ordered Subsequence(dp:最长上升子序列)
原文:http://blog.csdn.net/winddreams/article/details/40150829