题目
代码
动态规划
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1000+10;
int a[maxn], maxLen[maxn];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
maxLen[i] = 1;
}
for (int i = 2; i <= n; i++) {//求以i为终点的最长上升子序列长度
for (int j = 1; j < i; j++) {//查看以第j个数为终点的最长上升子序列
if (a[i] > a[j])
maxLen[i] = max(maxLen[i], maxLen[j] + 1);
}
}
cout << *max_element(maxLen+1, maxLen + n + 1) << endl;
return 0;
}