📄 合唱队.cpp
字号:
#include <stdio.h>
int los_len(int x[],int n) //最长递减子序列长度
{
int i,j,dmax,d[1001];
for(i=1;i<=n;i++)
d[i]=1;
for(i=n-1;i>=1;i--)
for(j=i+1;j<=n;j++)
if(x[j]<x[i]&&d[i]<d[j]+1)
d[i]=d[j]+1;
dmax=0;
for(i=1;i<=n;i++)
if(d[i]>dmax)
dmax=d[i];
return dmax;
}
int main()
{
int i,j,n,x[1001],max,a[1001],b[1001],tp1,tp2,max1,max2;
// freopen("in.txt","r",stdin);
while(scanf("%d",&n)&&n)
{
for(i=1;i<=n;i++)
scanf("%d",&x[i]);
max=0;
for(i=1;i<=n;i++)
{
tp1=0;
tp2=0;
for(j=i-1;j>=1;j--)
{
if(x[j]<x[i])
a[++tp1]=x[j];
}
for(j=i+1;j<=n;j++)
{
if(x[j]<x[i])
b[++tp2]=x[j];
}
if(tp1+tp2<max)
continue;
max1=los_len(a,tp1);
if(tp2+max1<max)
continue;
max2=los_len(b,tp2);
if(max1+max2>max)
max=max1+max2;
}
printf("%d\n",n-max-1);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -