文章
99
粉丝
120
获赞
8
访问
96.9k
#include <bits/stdc++.h>
using namespace std;
int n,a[105],dp_h[105],dp_t[105];
int main(){
while(cin>>n){
for(int i=0;i<n;i++){
cin>>a[i];
}
//从前往后找以a[i]结尾的最长上升子序列,存入dp_h
for(int i=0;i<n;i++){
dp_h[i]=1;
for(int j=0;j<i;j++){
if(a[j]<a[i]){
dp_h[i] = max(dp_h[j]+1,dp_h[i]);
}
}
}
//从后往前找以a[i]结尾的最长上升子序列,存入dp_t
for(int i=n-1;i>=0;i--){
dp_t[i]=1;
for(int j=i+1;j<n;j++){
if(a[j]<a[i]){
dp_t[i] = max(dp_t[j]+1,dp_t[i]);
}
}
}
int maxn=0;
for(int i=0;i<n;i++){
maxn=max(maxn,dp_h[i]+dp_t[i]);
}
maxn=maxn-1;//a[i]前后都被计算了,多算了一次所以要减1
cout<<n-maxn<<endl;
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发