【题目链接】

动态规划,不懂的话看这篇文章的思路【链接】

#include<iostream>
#include<algorithm>
#include<cstring> 
using namespace std;
int main()
{
    int i,j,n;
    cin>>n;
    int dp[1005],maxs[1005];
    memset(maxs,0,sizeof(maxs));
    for (i=1;i<=n;i++)
    cin>>dp[i];
    maxs[1]=1;
    for (i=2;i<=n;i++)
    {
        for (j=1;j<i;j++)
        {
            if (dp[j]<dp[i])
            maxs[i]=max(maxs[i],maxs[j]+1);
        }
        if (maxs[i]==0)
        maxs[i]=1;
    }
    sort(maxs,maxs+n+1);
    cout<<maxs[n];
}