dp[i]表示第i个数字为结尾的最最长上升子序列长度
dp[i]= max(dp[j]+1:(ai>aj&&k!=1), dp[i])
边界条件:d[i]=1 (1<=i<=n)
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int dp[100005];
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
dp[i]=1;
}
for(int i=2;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(a[i]>a[j])
dp[i]=max(dp[i], dp[j]+1);
}
}
printf("%d\n",*max_element(dp+1, dp+1+n));
}
return 0;
}