- 合唱队形
- 2016-10-23 22:46:12 @
#include<iostream>
#include<string.h>
using namespace std;
int n,i,j,ans;
int a[1000];
int max(int s1,int s2)
{
if (s1>=s2) return s1;
else return s2;
}
int findright(int key)
{
int f[1000];
int temp=0;
memset(f,0,sizeof(f));
f[key]=1;
for (int i=key+1;i<=n;i++)
{
for (int j=key;j<=i-1;j++)
if (a[i]<a[j]) f[i]=max(f[i],f[j]+1);
temp=max(temp,f[i]);
}
return temp;
}
int findleft(int key)
{
int f[1000];
int temp=0;
memset(f,0,sizeof(f));
f[key]=1;
for (int i=key-1;i>=1;i--)
{
for (int j=key;j>=i+1;j--)
if (a[i]<a[j]) f[i]=max(f[i],f[j]+1);
temp=max(temp,f[i]);
}
return temp;
}
int main()
{
cin>>n;
for (i=1;i<=n;i++) cin>>a[i];
ans=0;
for (i=1;i<=n;i++)
{
ans=max(ans,findleft(i)+findright(i)-1);
}
cout<<n-ans;
}
0 条评论
目前还没有评论...