标签:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int Maxn=1010; int dp[Maxn]; int main() { int t; int n,num[Maxn]; while(~scanf("%d",&n)){ for(int i=0;i<n;i++){ scanf("%d",&num[i]); } memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++){ dp[i]=1; for(int j=0;j<n;j++){ if(num[i]>num[j] && dp[i]<dp[j]+1){ dp[i]=dp[j]+1; } } } int ans=0; for(int j=0;j<n;j++){ ans=max(ans,dp[j]); } cout<<ans<<endl; } return 0; }
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int Maxn= 1010; int main() { int n,num[Maxn],temp[Maxn]; while(~scanf("%d",&n)){ for(int i=0;i<n;i++){ scanf("%d",&num[i]); } int cnt=1; temp[0]=num[0]; for(int i=0;i<n;i++){ if(num[i]>temp[cnt-1]){ temp[cnt++]=num[i]; } else{ int s=lower_bound(temp,temp+cnt,num[i])-temp; temp[s]=num[i]; } } printf("%d\n",cnt); } return 0; }
标签:
原文地址:http://www.cnblogs.com/Scale-the-heights/p/4333346.html