题目

描述:

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

题目类别:

循环

难度:

初级

运行时间限制:

无限制

内存限制:

无限制

阶段:

入职前练习

输入:

整数N
一行整数,空格隔开,N位同学身高

输出:

最少需要几位同学出列

样例输入:

8
186 186 150 200 160 130 197 200

样例输出:

4

代码

/*---------------------------------------
*   日期:2015-07-02
*   作者:SJF0115
*   题目:合唱队
*   来源:华为机试练习题
-----------------------------------------*/
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <list>
using namespace std;int Chorus(vector<int> height){int n = height.size();if(n == 0){return 0;}//if// left to right left[i] 统计出左边小于height[i]的身高个数(left[i] 包括height[i]本身)vector<int> left(n,1);for(int i = 1;i < n;++i){for(int j = i-1;j >=0;--j){if(height[i] > height[j]){if(left[i] < left[j]+1){left[i] = left[j]+1;}//if}//if}//for}//for// right to left  right[i] 统计出右边小于height[i]的身高个数(right[i] 包括height[i]本身)vector<int> right(n,1);for(int i = n-2;i >= 0;--i){for(int j = i+1;j < n;++j){if(height[i] > height[j]){if(right[i] < right[j]+1){right[i] = right[j]+1;}//if}//if}//for}//forint max = 0;for(int i = 0;i < n;++i){if(max < left[i] + right[i] - 1){max = left[i] + right[i] - 1;}//if}//forreturn n - max;
}int main(){int n;//freopen("C:\\Users\\Administrator\\Desktop\\c++.txt","r",stdin);while(cin>>n){vector<int> height;int h;// 输入身高for(int i = 0;i < n;++i){cin>>h;height.push_back(h);}//forcout<<Chorus(height)<<endl;}//whilereturn 0;
}
#include <iostream>
#include <vector>
using namespace std;
int solve(int n);
int main(){int n;//freopen("C:\\Users\\Administrator\\Desktop\\c++.txt","r",stdin);while(cin>>n){cout << solve(n) << endl;}return 0;
}int solve(int n){if(n==0 || n==1)return 0;int res = 0,h=0;vector<int> height;for(int i=0;i<n;i++){cin >> h;height.push_back(h);}vector<int> left(n,1), right(n,1);for(int i=0;i<n;i++){//统计i左边小于height[i]的人数for(int j=0;j<i;j++){if(height[i]>height[j])if(left[i]<left[j]+1)left[i] = left[j]+1;}//统计i右边小于height[i]的人数for(int k = n-i;k < n;++k){if(height[n-i-1]>height[k])if(right[n-i-1]<right[k]+1)right[n-i-1]=right[k]+1;}}/*for(int i = 0;i < n;++i){cout<<left[i]<<" ";}cout<<endl;for(int i = 0;i < n;++i){cout<<right[i]<<" ";}cout<<endl;*///选出最小的人数res = left[0] + right[0] -1;for(int j=1;j<n;j++)if(res<left[j] + right[j] -1)res = left[j] + right[j] -1;return n-res;
}

[华为机试练习题]37.合唱队相关推荐

  1. [华为机试练习题]55.最大公约数 amp; 多个数的最大公约数

    题目 描写叙述: 输入2个数字,最后输出2个数字的最大公约数 题目类别: 位运算 难度: 0基础 执行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 2个整数 输出: 输出数字1和 ...

  2. [华为机试练习题]60.水仙花数

    题目 描述: 水仙花数又称阿姆斯特朗数. 水仙花数是指一个n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153) 求输入的数字是否为水 ...

  3. [华为机试练习题]51.数列求和

    题目 描写叙述: 题目描写叙述 编敲代码,输入一个正整数n.求下列算式的值.要求定义和调用函数fact(k)计算k的阶乘. 1+1/2!+ .... +1/n! 计算结果保存在double类型变量中. ...

  4. (记录)华为机试练习题13—句子逆序

    华为机试练习题13-句子逆序 题目描述 输入描述: 输出描述 例如: 代码(Java) 题目描述 将一个英文语句以单词为单位逆序排放.例如"I am a boy",逆序排放后为&q ...

  5. [华为机试练习题]44.24点游戏算法

    题目 注意: 6 + 2 * 4 + 10 = 24 不是一个数字一个数字的计算 代码 /*--------------------------------------- * 日期:2015-07-0 ...

  6. [华为机试练习题]5.IP地址推断有效性

    题目 推断输入的字符串是不是一个有效的IP地址 具体描写叙述: 请实现例如以下接口 boolisIPAddressValid(constchar* pszIPAddr) 输入:pszIPAddr 字符 ...

  7. [华为机试练习题]28.报数

    题目 描述: 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出,问最后留下的那位是原来第几号. 题目类别: 数组,指针 难度: 初级 运行时间限制: 10Sec 内存限 ...

  8. 牛客网-华为机试练习题 16 购物单

    描述 王强今天很开心,公司发给N元的年终奖.王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 ...

  9. HJ77 火车进站 —— 华为机试练习题

    一.题目 描述 给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号,火车站只有一个方向进出,同时停靠在火车站的列车中,只有后进站的 ...

最新文章

  1. mysql cronjob 备份_mysql 数据备份 crontab
  2. android开发(30) 使用WebView,点击网页中的链接建立QQ 临时会话 WPA
  3. apidoc学习(接口文档定义取代word)
  4. java面试题42从以下哪一个选项中可以获得Servlet的初始化参数?
  5. 〖Linux〗svn log 每个日志记录只显示一行的方法
  6. MSSQL数据库设计心得
  7. 迷茫时,按照这7个方法寻找方向
  8. phpstudy中php页面不识别php代码解决方法
  9. spring cloud gateway获取真实ip以及跨服务器时路由转发的一些问题
  10. 已有企业认证的微信公众号快速创建一个企业小程序
  11. 基于php的房产中介信息网
  12. 如何快速将手写数据录入 Excel
  13. 基于多项式螺旋曲线的轨迹优化
  14. pytorch程序调通
  15. MHA简述与项目案例
  16. 使用 T-SQL 语句完成数据综合检索
  17. 基于CommonsCollections4的Gadget分析
  18. R语言ggplot绘制地图-报错汇总(一)
  19. 【视点】从一些实例看大数据部门的权与责
  20. NASM: Register 寄存器

热门文章

  1. windows下编译64位程序时没有没_WIN32定义
  2. 在asp.net2.0中使用存储过程
  3. 使用FileDialog查看文件内容
  4. 拿什么拯救我,我的爱人
  5. 【python】python中execl的操作
  6. apipost--接口测试脚本编写if判断语句使用
  7. 程序员怒斥:虎牙HR真奇葩,通知我面试,又何必当面羞辱我一番?
  8. Web 前端怎样入门?
  9. win10 看计算机配置要求,win10怎么看电脑配置
  10. 本地 mysql 数据库 上线 服务器_MySQL把本地数据库上传到服务器