在一个数字序列中,找到一个最长的子序列,可以不连续,使得这个子序列是不下降的(非递减的)
样例
1 2 3 -1 -2 7 9
最长不下降的子序列是 1 2 3 7 9,长度为5
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn =1000+5;
int a[maxn],dp[maxn];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int ans=-1;
for(int i=0;i<n;i++){
dp[i]=1;
for(int j=0;j<i;j++){
if(a[i] >= a[j] && dp[j]+1 > dp[i])
dp[i]=dp[j]+1;
}
ans=max(ans,dp[i]);
}
cout<<ans;
return 0;
}