最长上升子序列
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; const int maxn=1000+10; int a[maxn]; int dp[maxn]; int n; int main() { while(~scanf("%d",&n)) { for(int i=1; i<=n; i++) scanf("%d",&a[i]); memset(dp,0,sizeof dp); for(int i=1; i<=n; i++) { int Max=0; for(int j=1; j<i; j++) if(a[j]<a[i]) if(dp[j]>Max) Max=dp[j]; dp[i]=Max+1; } int ans=0; for(int i=1; i<=n; i++) ans=max(ans,dp[i]); printf("%d ",ans); } return 0; }