每次扫描前面的状态,求出一个最大的情况作为本次状态的结果。 算法复杂度O(N^2)

int d[1000], a[1000], n;
int res = 0; // 保存最长长度
for (int i = 1; i <= n; ++i) {
d[i] = 1;
for (int j = 1; j < i; ++j) {
if (a[j] < a[i]) {
d[i] = max(d[i], d[j] + 1);
}
}
res = max(res, d[i]);
}
cout << res<< endl; // res 就是最长的长度