Poj 1836

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;
}

 

posted @ 2014-07-15 16:11  _一千零一夜  阅读(155)  评论(0编辑  收藏  举报