#include<iostream>
#include<cstdio>
#include<cstring>
#define MAX 200
using namespace std;
int main()
{
//freopen("data.txt","r",stdin);
int dpUP[MAX],dpDown[MAX],num[MAX],n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>num[i];
}
int result=0xffff;
memset(dpUP,0,sizeof(dpUP));
memset(dpDown,0,sizeof(dpDown));
for(int i=0;i<n;i++)
{
dpUP[i]=1;
for(int j=0;j<i;j++)
if(num[i]>num[j]&&dpUP[j]+1>dpUP[i])
dpUP[i]=dpUP[j]+1;
}
//注意不能写到一个循环中
for(int i=n-1;i>=0;i--)
{
dpDown[i]=1;
for(int j=n-1;j>i;j--)
if(num[i]>num[j]&&dpDown[j]+1>dpDown[i])
dpDown[i]=dpDown[j]+1;
}
for(int i=0;i<n;i++)
{
int now=n-dpUP[i]-dpDown[i]+1;
if(now<result)
result=now;
}
cout<<result<<endl;
return 0;
}
华为OJ 合唱队 最长递增子序列,最长
最新推荐文章于 2018-06-30 11:34:33 发布