#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> v(n, 0);
for(int i = 0; i < n; ++i){
cin >> v[i];
}
// 对于一个数组,从前往后,每次只能从小到大,问最多经过多少数字
// 即寻找最长递增子序列的长度
vector<int> dp(v.size(), 1); //设置数组长度大小的动态规划辅助数组
int maxStep = 1;
for(int i = 1; i < v.size(); i++){
for(int j = 0; j < i; j++){
if(v[j] < v[i]){
dp[i] = max(dp[i], dp[j]+1);
}
if(dp[i] > maxStep){
maxStep = dp[i];
}
}
}
cout << maxStep << endl;
}
// 64 位输出请用 printf("%lld")

京公网安备 11010502036488号