题目描述:

计算最少出列多少位同学,使得剩下的同学排成合唱队形

说明:

N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 
合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK,   则他们的身高满足存在i(1<=i<=K)使得T1<T2<......<Ti-1<Ti>Ti+1>......>TK。 
你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。

Java实现:

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()) {int count = sc.nextInt();int[] arr = new int[count];int[] revarr = new int[count];for(int i = 0; i < count; i++) {arr[i] = sc.nextInt();revarr[count-i-1] = arr[i];}int[] dp1 = getdp(arr) ;int[] dp2 = getdp(revarr);int max = 0;for (int i = 0; i < count; i++) {dp1[i] += dp2[count-i-1];if (dp1[i] > max)max = dp1[i];}System.out.println(count-max+1);}}public static int[] getdp(int[] arr) {int[] dp = new int[arr.length];for (int i = 0; i < arr.length; i++) {dp[i] = 1;for (int j = 0; j < i; j++) {if (arr[i] > arr[j])dp[i] = Math.max(dp[i], dp[j] + 1);}}return dp;}
}

知识点:

  • 首先由本问题联想到【最长递增子序列】问题,真个数组从两个方向分别求dp数组,两个dp数组对应位置的值相加再减去1,就是合唱队中人数最多的数量,用总数减去它,就是最少需要出队的人数
  • 求最长递增子序列问题是一个一维动态规划问题,dp[i]代表以arr[i]这个元素结尾时最长递增子序列的长度,那么dp[i]的值就是之前的数arr[j]<arr[i]并且dp[j]最大的那个,遍历i之前的元素,找到最大的dp[j],dp[i] = dp[j]+1

【华为机试029】合唱队相关推荐

  1. 华为机试_HJ24 合唱队【中等】【收藏】

    目录 描述 输入描述: 输出描述: 解题过程 提交代码 学习代码 代码一 代码二 收藏点 描述 N 位同学站成一排,音乐老师要请最少的同学出列,使得剩下的 K 位同学排成合唱队形. 设KK位同学从左到 ...

  2. 【强烈推荐收藏】坚持3个月爆肝华为机试108题C++全解(适合新手入门,就业必刷套题)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 金九银十,金三银四.当前正处于校招.社招的火热期,之前就想为正在筹备就业的同学们准备刷题宝 ...

  3. 【华为机试真题Java】从入门到入职-真题列表导读

    写在前面 本专栏有100+道题(持续更新中),都是往期的HW机试真题,根据过往同学的经验基本都会考到原题.大家有什么不懂的都可以留言. 华为机试有三道题目,第一道和第二道属于简单或中等题,分值为100 ...

  4. 牛客在线编程-华为机试-中等

    牛客在线编程题目-华为机试-中等 题号 题目 知识点 难度 通过率 HJ16 购物单 动态规划 中等 21.21% HJ17 坐标移动 字符串 中等 24.79% HJ20 密码验证合格程序 数组 字 ...

  5. 华为机试108题(C 语言解答)

    Nowcoder题库链接:华为机试 HJ1 字符串最后一个单词的长度(字符串) 输入:hello nowcoder输出:8说明: 最后一个单词为nowcoder,长度为8 示例代码: HJ1.c #i ...

  6. (python)牛客网(华为机试四)——较难

    本博客为博主解题的部分记录,由于均为自己写的,所以答案并非最优解,有很多地方可以优化. 其他题解合集: (python)牛客网(华为机试一)--入门 (python)牛客网(华为机试二)--简单 (p ...

  7. [华为机试真题][2014]62.去除重复字符并排序

    题目 描述: 去除重复字符并排序 运行时间限制: 无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 代码 /*- ...

  8. 牛客网--华为机试在线训练10:字符个数统计

    牛客网–华为机试在线训练10:字符个数统计 题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在A ...

  9. 牛客网–华为机试在线训练9:提取不重复的数

    牛客网–华为机试在线训练9:提取不重复的数 题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺 ...

最新文章

  1. 6月5日,IBM“云有‘智’,事竟成”大会邀您莅临!
  2. Android Fragment中嵌套Fragment,不显示view
  3. shell 中引用参数总结
  4. 科大星云诗社动态20210428
  5. 饼状图改变数据显示位置_这么用MatPlotLib视觉化呈现数据,你值得拥有
  6. why my employee binding does not work - important MVC debug
  7. [FZYZOJ 1038] 隧道
  8. 设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误
  9. python3 字典有序_Python3 有序字典—OrderedDict()
  10. huya虎牙小程序------真心话大冒险
  11. win7 计算机登录用户名和密码忘记,电脑win7登陆密码忘记了怎么办_win7忘记登陆密码如何进入-win7之家...
  12. Linux打包与压缩命令
  13. 关于自动化测试的前期发展历史及未来发展趋势
  14. OpenStack 快速进阶教程
  15. DT算法(暗像元法)在C6.1中的改进:Aerosol Dark Target (10km 3km) Collection 6.1 Changes
  16. 手机android系统锁了怎么解决方法,安卓手机被恶意软件锁机了怎么办?试下这五种方法...
  17. java argument type mismatch_解决mybatisplus插入报错argument type mismatch的问题
  18. EPICS-从零开始的电机控制
  19. webview的java与js互操作
  20. 基于java愤怒的小鸟游戏的设计与实现

热门文章

  1. 字符转换 (15分)
  2. 史上最全的NB-IoT知识,每个通信人都应该了解的
  3. Android使用文件管理器打开指定文件夹,浏览里面的内容
  4. 基于nexus搭建golang代码下载代理缓存私服
  5. JS中find()和findIndex()
  6. 计算机二级考MS office还是WPS office?
  7. PPT“备注”内容字体可以修改颜色也能直接看到修改效果
  8. 深入产品线的配置管理
  9. 使用Python库valuequant和利润表历史数据计算股权价值
  10. 苹果、微软、谷歌三巨头联手,“杀死”密码