牛客网–合唱队形

牛客网–合唱队形

题目描述
N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, …, K,他们的身高分别为T1, T2, …, TK, 则他们的身高满足T1 < T2 < … < Ti , Ti > Ti+1 > … > TK (1 <= i <= K)。 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。
输入描述:
输入的第一行是一个整数N(2 <= N <= 100),表示同学的总数。
第一行有n个整数,用空格分隔,第i个整数Ti(130 <= Ti <= 230)是第i位同学的身高(厘米)。
输出描述:
可能包括多组测试数据,对于每组数据,
输出包括一行,这一行只包含一个整数,就是最少需要几位同学出列。
示例1
输入
8
186 186 150 200 160 130 197 220
输出
4

关键就是找出一个人在从左到右处于第几个位置,从右到左处于第几个位置,然后相加减一就是队列里的人数,找出其中最大的,最少要去除的人数就可以得到了。

#include<bits/stdc++.h>
using namespace std;

int max(int a,int b)
{
    if(a>b) return a;
    else return b;
}
//left记录每个数从左边数是第几个数(按照大小顺序)
//right记录从右边数
int main(){
    int n;
    int stu[100];
    int left[100],right[100];
    while(scanf("%d",&n)!=EOF){
        for(int i=0;i<n;i++){
            cin>>stu[i]; //输入数据
        }
        for(int i=0;i<n;i++){//每个数 数的时候,算上本身
            left[i]=1;
            right[i]=1;
        }
        for(int i=1;i<n;i++){//从左往右,从第二个数开始,因为第一个数肯定就是从左开始的第一个
            for(int j=0;j<i;j++){//从头开始,看是否符合由小到大
                if(stu[i]>stu[j]){
                    left[i]=max(left[i],left[j]+1);
                }
            }
        }
        for(int i=n-2;i>=0;i--){
            for(int j=n-1;j>i;j--){
                if(stu[i]>stu[j]){
                   right[i]=max(right[i],right[j]+1);
                }
            }
        }
        int MAX=0;
        for(int i=0;i<n;i++){
            stu[i]=left[i]+right[i];
            MAX=max(MAX,stu[i]);
        }
        cout<<n-MAX+1<<endl;
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100209.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 手机怎么模拟125k卡_手把手教你用手机NFC秒变门禁卡,这个方法多种手机都可以适用…

    手机怎么模拟125k卡_手把手教你用手机NFC秒变门禁卡,这个方法多种手机都可以适用…现在只要手机支持NFC功能,手机秒变公交卡、移动支付、数据传输、门禁卡等功能,之前在评论看多好多人说不知道怎么复制门禁卡,今天就来和大家讲解下如何复制门禁卡。我们以华为手机,前提是手机支持NFC功能的。第一步:门禁卡功能在钱包里面,所以首先找到华为钱包并打开,登录你的华为账号,在主页找到【门钥匙】。第二步:点击进入【门钥匙】后,点击【添加】,开始【模拟】门卡第三步:根据提示,将门卡放到手机背面NF…

    2022年5月24日
    417
  • vim跳转到文件头与文件末尾的命令

    vim跳转到文件头与文件末尾的命令

    2022年2月16日
    95
  • SIGPIPE信号的产生及处理

    SIGPIPE信号的产生及处理SIGPIPE信号的产生在tcp四次挥手过程中,发送方向已经调用close()方法的socket一端写数据,会产生sigpipe错误。close():关闭读写两个方向,会导致sigpipe信号shutdown():可以选择关闭读/写方向,不会导致sigpipe信号SIGPIPE信号的解决方法直接忽略sigpipe信号voidhandle_for_sigpipe(){str…

    2022年7月17日
    20
  • Lua五:”collectgarbage”、 弱引用table、析构器「建议收藏」

    Lua五:”collectgarbage”、 弱引用table、析构器「建议收藏」Lua具有自动内存回收机制,但是垃圾收集器只能回收那些它认为是垃圾的东西,不会回收那些用户认为是垃圾的东西。比如将一个对象放在一个数组中但没有用时,它就无法被回收,这是因为即使当前没有其他地方在使用它

    2022年7月4日
    31
  • SWD应用接口

    SWD应用接口随着ARM公司对Cortex系列的推出,采样SWD方式调试成了大家的首选。SWD不仅速度可以与JTAG媲美,而且使用的调试线少得多。很多人在采样SWD方式进行调试时,一般都是采用4线:①VCC     –    电源②GND    –   地线③SWDIO-   数据④SWCLK-  时钟       在对NXP的LPC111

    2022年4月25日
    60
  • 竞争性需求分析

    竞争性需求分析

    2021年11月18日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号