思路:先求上升子序列,再求下降子序列,再相加,求最大值(已减一)
#include<bits/stdc++.h>
using namespace std;
int n,a[101],b[101],c[101],ma=0;
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++){
b[i]=c[i]=1;
for(int j=1;j<i;j++)
if(a[j]<a[i])b[i]=max(b[i],b[j]+1);
for(int j=n;j>i;j--)
if(a[j]<a[i])c[i]=max(c[i],c[j]+1);
ma=max(ma,b[i]+c[i]-1);
}
cout<<n-ma;
return 0;
}
本人是真蒟蒻,求大佬帮助