题解 | #合唱队#
合唱队
https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4
#include <stdio.h>
//基本上从新学了一遍动态规划,真是学时不知知识好,错把美女当成宝!
int main() {
int str[3001];
int lmax[3001];
int lmaxs[3001];
int rmax[3001];
int rmaxs[3001];
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&str[i]);
}
for(int i=0;i<n;i++)
{
lmax[i]=1;
}
for(int i=0;i<n;i++)
{
lmaxs[i]=1;
}
for(int i=0;i<n;i++)
{
rmax[i]=1;
}
for(int i=0;i<n;i++)
{
rmaxs[i]=1;
}
for(int i=1;i<n;i++)
{
for(int j=i-1;j>=0;j--)
{
if(str[i]>str[j])
{
if((lmax[j]+1)>lmaxs[i])
{
int c,d;
c=lmaxs[i];
d=lmax[j];
lmaxs[i]=lmax[j]+1;
}
}
}
lmax[i]=lmaxs[i];
}
for(int i=n-2;i>=0;i--)
{
for(int j=i+1;j<n;j++)
{
if(str[i]>str[j])
{
if((rmax[j]+1)>rmaxs[i])
{
int c,d;
c=rmaxs[i];
d=rmax[j];
rmaxs[i]=rmax[j]+1;
}
}
}
rmax[i]=rmaxs[i];
}
int max;
max=1;
for(int i=0;i<n;i++)
{
if((lmax[i]+rmax[i]-1)>max)
{
int c,d;
c=lmax[i];
d=rmax[i];
max=lmax[i]+rmax[i]-1;
}
}
int min;
min=n-max;
printf("%d",min);
}

