【华为机试029】合唱队
题目描述:
计算最少出列多少位同学,使得剩下的同学排成合唱队形
说明:
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】合唱队相关推荐
- 华为机试_HJ24 合唱队【中等】【收藏】
目录 描述 输入描述: 输出描述: 解题过程 提交代码 学习代码 代码一 代码二 收藏点 描述 N 位同学站成一排,音乐老师要请最少的同学出列,使得剩下的 K 位同学排成合唱队形. 设KK位同学从左到 ...
- 【强烈推荐收藏】坚持3个月爆肝华为机试108题C++全解(适合新手入门,就业必刷套题)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 金九银十,金三银四.当前正处于校招.社招的火热期,之前就想为正在筹备就业的同学们准备刷题宝 ...
- 【华为机试真题Java】从入门到入职-真题列表导读
写在前面 本专栏有100+道题(持续更新中),都是往期的HW机试真题,根据过往同学的经验基本都会考到原题.大家有什么不懂的都可以留言. 华为机试有三道题目,第一道和第二道属于简单或中等题,分值为100 ...
- 牛客在线编程-华为机试-中等
牛客在线编程题目-华为机试-中等 题号 题目 知识点 难度 通过率 HJ16 购物单 动态规划 中等 21.21% HJ17 坐标移动 字符串 中等 24.79% HJ20 密码验证合格程序 数组 字 ...
- 华为机试108题(C 语言解答)
Nowcoder题库链接:华为机试 HJ1 字符串最后一个单词的长度(字符串) 输入:hello nowcoder输出:8说明: 最后一个单词为nowcoder,长度为8 示例代码: HJ1.c #i ...
- (python)牛客网(华为机试四)——较难
本博客为博主解题的部分记录,由于均为自己写的,所以答案并非最优解,有很多地方可以优化. 其他题解合集: (python)牛客网(华为机试一)--入门 (python)牛客网(华为机试二)--简单 (p ...
- [华为机试真题][2014]62.去除重复字符并排序
题目 描述: 去除重复字符并排序 运行时间限制: 无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 代码 /*- ...
- 牛客网--华为机试在线训练10:字符个数统计
牛客网–华为机试在线训练10:字符个数统计 题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在A ...
- 牛客网–华为机试在线训练9:提取不重复的数
牛客网–华为机试在线训练9:提取不重复的数 题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺 ...
最新文章
- 6月5日,IBM“云有‘智’,事竟成”大会邀您莅临!
- Android Fragment中嵌套Fragment,不显示view
- shell 中引用参数总结
- 科大星云诗社动态20210428
- 饼状图改变数据显示位置_这么用MatPlotLib视觉化呈现数据,你值得拥有
- why my employee binding does not work - important MVC debug
- [FZYZOJ 1038] 隧道
- 设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误
- python3 字典有序_Python3 有序字典—OrderedDict()
- huya虎牙小程序------真心话大冒险
- win7 计算机登录用户名和密码忘记,电脑win7登陆密码忘记了怎么办_win7忘记登陆密码如何进入-win7之家...
- Linux打包与压缩命令
- 关于自动化测试的前期发展历史及未来发展趋势
- OpenStack 快速进阶教程
- DT算法(暗像元法)在C6.1中的改进:Aerosol Dark Target (10km 3km) Collection 6.1 Changes
- 手机android系统锁了怎么解决方法,安卓手机被恶意软件锁机了怎么办?试下这五种方法...
- java argument type mismatch_解决mybatisplus插入报错argument type mismatch的问题
- EPICS-从零开始的电机控制
- webview的java与js互操作
- 基于java愤怒的小鸟游戏的设计与实现
热门文章
- 字符转换 (15分)
- 史上最全的NB-IoT知识,每个通信人都应该了解的
- Android使用文件管理器打开指定文件夹,浏览里面的内容
- 基于nexus搭建golang代码下载代理缓存私服
- JS中find()和findIndex()
- 计算机二级考MS office还是WPS office?
- PPT“备注”内容字体可以修改颜色也能直接看到修改效果
- 深入产品线的配置管理
- 使用Python库valuequant和利润表历史数据计算股权价值
- 苹果、微软、谷歌三巨头联手,“杀死”密码