题目描述
给出一个由 n(n≤5000) 个不超过 106 的正整数组成的序列。请输出这个序列的最长上升子序列的长度。
最长上升子序列是指,从原序列中按顺序取出一些数字排在一起,这些数字是逐渐增大的。
输入格式
第一行,一个整数 n,表示序列长度。
第二行有 n 个整数,表示这个序列。
输出格式
一个整数表示答案。
#include<bits/stdc++.h>
using namespace std;
int n, a[10010], mx = 0, jc, f[10010];
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
f[i] = 1;
}
for (int i = 1; i <= n; i++) {
for (int j = i + 1; j <= n; j++) {
if (a[i] < a[j]) f[j] = max(f[i] + 1, f[j]);
}
}
for (int i = 1; i <= n; i++) {
mx = max(mx, f[i]);
}
cout << mx;
return 0;
}