#include<bits/stdc++.h>
using namespace std;
int n, arr[30];
int dp[30]; // dp[i] 表示以第 i 个数字结尾最长不上升子序列长度为 dp[i]
int main() {
cin >> n;
for(int i = 1; i <= n; i ++ ) cin >> arr[i];
for(int i = 1; i <= n; i ++ ){
dp[i] = 1; // 1 个数时最长不上升子序列长度就是自己, 长度为 1
for(int j = 1; j < i; j ++ ){
if(arr[i] <= arr[j]){ // 如果小于等于前面的数, 说明不下降
dp[i] = max(dp[i], dp[j] + 1); // 要么不变, 要么选择 j 的最长子序列然后加上第 i 个数字本身
}
}
}
int ans = 0;
for(int i = 1; i <= n; i ++ ){ // 最长的子序列不一定是以最后一个数字结尾
ans = max(dp[i], ans);
}
cout << ans;
return 0;
}
07-05
2334

09-18
1万+
