题解
2025-08-23 14:54:58
发布于:浙江
5阅读
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;
}
这里空空如也




有帮助,赞一个