华为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是因为中间的那个数加了两次。
}
} }

合唱队

最新文章

  1. 【BZOJ-4726】Sabota? 树形DP
  2. JavaScript基础(一)之语法、变量、数据类型
  3. Linux 中 Nginx 重启关闭
  4. apache2.4配置访问日志分割并过滤图片CSS等无用内容
  5. yii + elasticsearch 手册
  6. Test Tex
  7. windows2003批量添加和导出所有ip
  8. C/C++程序基础
  9. mysql 1093 错误
  10. Google高级技巧—google Hack★★★★
  11. Gengxin讲STL系列目录
  12. Hadoop 2.x从零基础到挑战百万年薪第一季
  13. JavaScript DOM编程艺术-学习笔记(第五章、第六章)
  14. 【openstack N版】——块存储服务cinder
  15. cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)
  16. 《深入理解 JVM 虚拟机》 --- 看书笔记
  17. BZOJ1000-1099板刷计划+一句话题解 73/100
  18. Git .gitignore文件简介及使用
  19. SQL Server将一列的多行内容拼接成一行
  20. HBase篇(2)-数据模型与操作

热门文章

  1. Yii 框架生成缩略图
  2. $(document).ready() 与 window.onload的区别
  3. 总结Ajax跨域调用问题
  4. C Primer Plus(第五版)1
  5. C++primer 练习13.36
  6. SQL 获取各表记录数的最快方法
  7. OS X open finder here in terminal
  8. TesCase-GUI(图形用户界面)测试
  9. 【caffe-windows】 caffe-master 之 mnist 超详细
  10. 视差贴图(Parallax Mapping)