文章
99
粉丝
120
获赞
8
访问
137.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;
- }
-
登录后发布评论
暂无评论,来抢沙发