动态规划
分别求出每个位置元素的左边最长递增序列和右边最长递减序列,求和之后取最大,就是符合的合唱队形,用总人数减去合理的人数就是所求结果。
import java.util.*;
public class Main{
    public static void main(String []args){
        Scanner input=new Scanner(System.in);
        int n=input.nextInt();
        int []num=new int[n];
        for(int i=0;i<n;i++){
            num[i]=input.nextInt();
        }
        int maxLen=0;
        for(int i=0;i<n;i++){
            int []dp=new int[i+1];
            Arrays.fill(dp,1);
            for(int j=1;j<=i;j++){   //找到左边最长递增
                for(int k=j+1;k<=i;k++){
                    if(num[k]>num[j]){
                        dp[k]=Math.max(dp[k],dp[j]+1);
                    }
                }
            }
            int left=dp[i];
            dp=new int[n];
            Arrays.fill(dp,1);
            for(int j=i;j<n;j++){   //找到右边最长递减
                for(int k=j+1;k<n;k++){
                    if(num[k]<num[j]){
                        dp[k]=Math.max(dp[k],dp[j]+1);
                    }
                }
            }
            int right=dp[n-1];
            maxLen=Math.max(maxLen,left+right-1);
        }
       System.out.println(n-maxLen);
    }
}