最长上升子序列LIS
#include<bits/stdc++.h> #define maxn 30 using namespace std; int n,f[maxn],a[maxn]; int ans=0; void LIS(){ for(int i=1;i<=n;i++){ f[i]=1; for(int j=1;j<i;j++) if(a[j]<a[i]) f[i]=max(f[i],f[j]+1); } for(int i=1;i<=n;i++) ans=max(ans,f[i]); } int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; LIS(); cout<<ans<<endl; return 0; }