using namespace std;
const int kMaxN = 1001;
int kArr[kMaxN];
int kDp[kMaxN];
int kN;
* dp[i] 表示 a[i] 结尾的 最大 LIS
* dp[i] = max(dp[i], dp[j] + 1);
*/
int (){
memset(kDp, 0, sizeof(kDp));
for(int i = 0; i < kN; ++i){
kDp[i] = 1;
}
for(int i = 1; i < kN; ++i){
for(int j = 0; j < i; ++j){
if(kArr[i] > kArr[j]){
kDp[i] = max(kDp[i], kDp[j] + 1);
}
}
}
int ret = 0;
for(int i = 0; i < kN; ++i){
ret = max(kDp[i], ret);
}
return ret;
}
int main(){
while(cin >> kN){
for(int i = 0; i < kN; ++i)
cin>>kArr[i];
int ret = Solve();
cout<<ret<<endl;
}
return 0;
}
近期评论