8
1.86 1.86 1.30621 2 1.4 1 1.97 2.2
有八个大兵身高如上 求至少出列几个大兵可以站成山形队列
#include<iostream>
using namespace std;
double a[1111];
int dp1[1111];
int dp2[1111];
int main()
{
int i,j;
int n;
int max;
while(scanf("%d",&n)!=EOF)
{
max=0;
for(i=1;i<=n;i++ )
{
dp1[i]=1;
dp2[i]=1;
scanf("%lf",&a[i]);
}
for(i=1;i<=n;i++)
{
int max1=0;
for(j=i-1;j>=1;j--)
{
if(a[i]>a[j]&&dp1[j]>max1)
max1=dp1[j];
}
dp1[i]+=max1;
}
for(i=n;i>=1;i--)
{
int max2=0;
for(j=n;j>i;j--)
if(a[i]>a[j]&&max2<dp2[j])
max2=dp2[j];
dp2[i]+=max2;
}
int x,y;
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
if(dp1[i]+dp2[j]>max)
{
x=i;y=j;
max=dp1[i]+dp2[j];
}
if(x!=y)
cout<<n-max<<endl;
else cout<<n-max+1<<endl;
}
return 0;
}