题解
2025-08-23 14:54:58
发布于:浙江
2阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int N = 1005;
int n;
int dp_lis[N];
int dp_lnis[N];
int maxn;
int main(){
cin>>n;
vector<int>vec(n+5);
for(int i = 0;i < n;i++)cin>>vec[i];
for(int i = 0;i < n;i++){
dp_lis[i]=1;
for(int j = 0;j < i;j++){
if(vec[j]<vec[i]){
dp_lis[i]=max(dp_lis[i],dp_lis[j]+1);
}
}
}
for(int i = n-1;i >= 0;i--){
dp_lnis[i]=1;
for(int j = i+1;j < n;j++){
if(vec[j]<vec[i]){
dp_lnis[i]=max(dp_lnis[i],dp_lnis[j]+1);
}
}
}
for(int i = 0;i < n;i++)maxn=max(maxn,dp_lis[i]+dp_lnis[i]);
cout<<maxn-1;
return 0;
}
这里空空如也
有帮助,赞一个