[华为机试练习题]37.合唱队
题目
描述:
计算最少出列多少位同学,使得剩下的同学排成合唱队形说明: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.合唱队相关推荐
- [华为机试练习题]55.最大公约数 amp; 多个数的最大公约数
题目 描写叙述: 输入2个数字,最后输出2个数字的最大公约数 题目类别: 位运算 难度: 0基础 执行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 2个整数 输出: 输出数字1和 ...
- [华为机试练习题]60.水仙花数
题目 描述: 水仙花数又称阿姆斯特朗数. 水仙花数是指一个n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153) 求输入的数字是否为水 ...
- [华为机试练习题]51.数列求和
题目 描写叙述: 题目描写叙述 编敲代码,输入一个正整数n.求下列算式的值.要求定义和调用函数fact(k)计算k的阶乘. 1+1/2!+ .... +1/n! 计算结果保存在double类型变量中. ...
- (记录)华为机试练习题13—句子逆序
华为机试练习题13-句子逆序 题目描述 输入描述: 输出描述 例如: 代码(Java) 题目描述 将一个英文语句以单词为单位逆序排放.例如"I am a boy",逆序排放后为&q ...
- [华为机试练习题]44.24点游戏算法
题目 注意: 6 + 2 * 4 + 10 = 24 不是一个数字一个数字的计算 代码 /*--------------------------------------- * 日期:2015-07-0 ...
- [华为机试练习题]5.IP地址推断有效性
题目 推断输入的字符串是不是一个有效的IP地址 具体描写叙述: 请实现例如以下接口 boolisIPAddressValid(constchar* pszIPAddr) 输入:pszIPAddr 字符 ...
- [华为机试练习题]28.报数
题目 描述: 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出,问最后留下的那位是原来第几号. 题目类别: 数组,指针 难度: 初级 运行时间限制: 10Sec 内存限 ...
- 牛客网-华为机试练习题 16 购物单
描述 王强今天很开心,公司发给N元的年终奖.王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 ...
- HJ77 火车进站 —— 华为机试练习题
一.题目 描述 给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号,火车站只有一个方向进出,同时停靠在火车站的列车中,只有后进站的 ...
最新文章
- mysql cronjob 备份_mysql 数据备份 crontab
- android开发(30) 使用WebView,点击网页中的链接建立QQ 临时会话 WPA
- apidoc学习(接口文档定义取代word)
- java面试题42从以下哪一个选项中可以获得Servlet的初始化参数?
- 〖Linux〗svn log 每个日志记录只显示一行的方法
- MSSQL数据库设计心得
- 迷茫时,按照这7个方法寻找方向
- phpstudy中php页面不识别php代码解决方法
- spring cloud gateway获取真实ip以及跨服务器时路由转发的一些问题
- 已有企业认证的微信公众号快速创建一个企业小程序
- 基于php的房产中介信息网
- 如何快速将手写数据录入 Excel
- 基于多项式螺旋曲线的轨迹优化
- pytorch程序调通
- MHA简述与项目案例
- 使用 T-SQL 语句完成数据综合检索
- 基于CommonsCollections4的Gadget分析
- R语言ggplot绘制地图-报错汇总(一)
- 【视点】从一些实例看大数据部门的权与责
- NASM: Register 寄存器