华为OJ-合唱队
华为OJ-初级题-合唱队

思路与分析
本题可以用DP的方法,分别从正向和逆向的两个方向求,该数组即186 186 150 200 160 130 197 200的上升对大序列。正向为[1, 1, 1, 2, 2, 1, 3, 4],逆向为[3, 3, 2, 3, 2, 1, 1, 1]。
然后将两个序列相加取最大值为5,根据题意出列的人数为N -(5 - 1)。注:减去1的原因是为中间的数被正序和逆序加了两次。
第一次做这种题表示很蒙蔽<`_`>~那么下面是源码。
本题参考代码
import java.util.Arrays;
import java.util.Scanner;
/**
* 合唱队
* array[]:待处理数据
* Inc[]:正向遍历得到上升的最大序列
* Dec[]:逆向遍历得到上升的最大序列
*
* Created by Evan on 2016-8-29.
*/
public class ChorusDp { public static void main(String []args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int N = sc.nextInt();
int [] array = new int [N];
int [] Inc = new int [N];
int [] Dec = new int [N];
for( int i = 0; i < N;i++){
array[i] = sc.nextInt();
}
//正向遍历得到上升的最大序列的个数是多少,本题为[1, 1, 1, 2, 2, 1, 3, 4] Inc[0] = 1;
for( int i = 1; i < N ; i++){
Inc[i] = 1;
for( int j = 0 ; j < i;j++){
if(array[i] > array[j] && Inc[j] + 1 > Inc[i]){
Inc[i] = Inc[j] + 1;
}
}
}
//System.out.println(Arrays.toString(Inc));
//逆向最长上升序列的个数,本题为[3, 3, 2, 3, 2, 1, 1, 1]
Dec[N - 1] = 1;
for(int i = N - 2; i >=0; i--){
Dec[i] = 1;
for(int j = N - 1; j > i; j--){
if(array[i] > array[j] && Dec[j] + 1 > Dec[i]){
Dec[i] = Dec[j] + 1;
}
}
}
//System.out.println(Arrays.toString(Dec));
int temp = Inc[0] + Dec[0];
for(int i = 1; i < N ;i++){
if(Inc[i] + Dec[i] > temp){
temp = Inc[i] + Dec[i];
}
}
System.out.println(N - temp + 1);//减去1是因为中间的那个数加了两次。
}
} }
合唱队
华为OJ-合唱队的更多相关文章
- 华为OJ:火车进站
火车进站 给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号.要求以字典序排序输出火车出站的序列号. 输入描述: 有多组测试用例, ...
- 在华为oj的两个月
一次偶然的机会,我接触到华为oj平台(http://career-oj.huawei.com/exam/camLogin.jsp),当时的心情很是兴奋,于是立马注册开通,然后迫不及待地上去做题.刚开始 ...
- 合唱队(华为OJ)
描述 计算最少出列多少位同学,使得剩下的同学排成合唱队形 说明: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左 ...
- 华为oj 刷题记录之合唱团
华为OJ-合唱队 描述 计算最少出列多少位同学,使得剩下的同学排成合唱队形 说明: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队 ...
- 华为OJ题目:刷题
题目描述: 新入职华为的小伙伴们都有在oj上面刷题的任务,共需要刷100道初级题,45道中级题,5道高级题,其中,做出来的高级题如果超标可以当初级或者中级题,做出来的中级题如果超标可以当初级题.每天, ...
- 华为OJ平台——字符串分隔
题目描述: 连续输入字符串,请按长度为8拆分每个字符创 后输出到新的字符串数组: 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理 输入 连续输入字符串(输入两次,每个字符长长度小于100)输 ...
- 华为OJ平台——输出最小的k个数
输入n个整数,输出其中最小的k个. 详细描述: 接口说明 原型: bool GetMinK(unsignedint uiInputNum, int *pInputArray, unsignedint ...
- 华为OJ平台——矩阵乘法
题目描述: 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C. 输入: 1.第一个矩阵的行数 2.第一个矩阵的列数(也是第二个矩阵的行数) 3.第二个矩阵 ...
- 华为OJ机试训练(一)
题目1 -- 通过输入英文句子.将每一个单词反过来,标点符号顺序不变.非26个字母且非标点符号的情况就可以标识单词结束. 标点符号包含,.!? 比如输入:Hello, I need an apple. ...
- 矩阵乘法的运算量计算(华为OJ)
题目地址: https://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b?tpId=37&&tqId=21293 ...
随机推荐
- 【收藏用】--切勿转载JAVA 使用Dom4j 解析XML
原帖地址 : http://blog.csdn.NET/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1) ...
- nbIoT基础概念
1. 物理信道(L1与L2之间) 上行:PRACH.PUSCH 下行:PBCH.PDCCH.PDSCH 2.逻辑信道(L2与L3之间) CCCH.DCCH.DTCH 3.信令(L3与NAS层之间) D ...
- 查看maven项目的依赖关系 mvn dependency:tree
maven-dependency-plugin最大的用途是帮助分析项目依赖,dependency:list能够列出项目最终解析到的依赖列表,dependency:tree能进一步的描绘项目依赖树,de ...
- ListView设置setFooterDividersEnabled无效的原因
参考文章:http://gundumw100.iteye.com/blog/1169065 我的情况: 高度设置为了wrap_content, 且外边有一个FrameLayout(只包含了listvi ...
- var obj = {};var obj2 = [];var obj3;
<script> var obj = {}; console.log(obj); var obj2 = []; console.log(obj2); var obj3; console.l ...
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用 引自http://www.blogjava.net/TiGERTiAN/archive/2008/10/25/236519.html
Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object ...
- oracle 事务测试
此文章是根据官方改变 模拟帐户转账流程 1.JOHN帐户扣除-DAVID帐户增加-记录日志-事务提交 三个操作必须全部完成此事务才完成,否则失败 创建帐户余额表自增字段自增序列: ; 创建支票表 ...
- WebsitePanel 2.1.0beta配置部分
到http://www.websitepanel.net/downloads/下载好单独安装包作为网站内容运行在IIS7.0上,配置applicationpool为localsystem Websit ...
- cookie、session、sessionid 与jsessionid
可查看 http://www.cnblogs.com/fnng/archive/2012/08/14/2637279.html
- IBM Appscan基本操作手册
一.操作前提 1.首先下载Appscan的安装包 2.安装Appscan 二.操作流程 1.双击图标,打开Appscan软件 2.打开软件后,页面显示如下: 3.选择“文件-新建”,弹出如下的窗口: ...