O(N^2)
dp[i]表示到第i个数的最大上升子序列的个数
如果第i个数比第j个数大并且dp[j]+1>dp[i]
dp[i]=dp[j]+1
dp[j]为第j个数之前的LIS
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int a[10001];
int dp[10001];
int main()
{
int n,i,j;
int ans=1;
scanf("%d",&n);
dp[1]=1;
for (i=0;i<n;i++)
{
scanf("%d",&a[i]);
dp[i]=1;
}
for (i=1;i<=n;i++)
{
for (j=0;j<i;j++)
{
if (a[i]>a[j])
dp[i]=max(dp[i],dp[j]+1);
}
ans=max(ans,dp[i]);
}
printf("%d",ans);
return 0;
}
贪心+二分
学会了再写