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; }
原文地址:http://www.cnblogs.com/zhangdashuai/p/3845028.html