#include<iostream>
using namespace std;
int N;
const int MAXN=10010;
int num[MAXN];
int decc[MAXN];
int incc[MAXN];
int main()
{
while(scanf("%d",&N),N)
{
for(int i=1;i<=N;i++)
scanf("%d",&num[i]);
for(int i=1;i<=N;i++)
{
decc[i]=1;
incc[i]=1;
}
for(int i=2;i<=N;i++)
{
for(int j=1;j<=i-1;j++)
{
if(num[i]>num[j])
{
decc[i]=max(decc[i],decc[j]+1);
}
}
}
for(int i=N-1;i>=1;i--)
{
for(int j=i+1;j<=N;j++)
{
if(num[i]>num[j])
incc[i]=max(incc[i],incc[j]+1);
}
}
int minn=N;
for(int i=1;i<=N;i++)
{
int xx=N-(decc[i]+incc[i]-1);
minn=min(minn,xx);
}
printf("%d\n",minn);
}
return 0;
}
算法笔记【问题 C: 合唱队形】
最新推荐文章于 2024-07-15 16:24:09 发布