合唱队
2015-07-30 20:45
225 查看
计算最少出列多少位同学,使得剩下的同学排成合唱队形
说明:
N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。
合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1<=i<=K)使得:
T1 < T2 <… Ti>Ti+1>…>TK
你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。
C++代码:
#include<iostream> #include<vector> #include<algorithm> using namespace std; class Solution { public: int minStudentOut(vector<int> height){ int size =height.size(),ret=INT_MAX; vector<int> leftSmall, rightSmall; leftSmall = leftSmallTotal(height); rightSmall = rightSmallTotal(height); for (int i = 0; i < size; i++){ ret = min(ret, i-leftSmall[i] + size-(i+1)- rightSmall[i]); } return ret; } vector<int> leftSmallTotal(vector<int> height){ int size = height.size(),smallTol=0; vector<int> ret(size, 0); for (int i = 0; i < size; i++){ int num = height[i]; for (int j = 0; j < i; j++){ if (num>height[j]){ smallTol = max(smallTol, ret[j]+1); } } ret[i] = smallTol; smallTol = 0; } return ret; } vector<int> rightSmallTotal(vector<int> height){ int size = height.size(), smallTol = 0; vector<int> ret(size, 0); for (int i = size-1; i >=0 ; i--){ int num = height[i]; for (int j = size-1; j >i; j--){ if (num>height[j]){ smallTol = max(smallTol, ret[j] + 1); } } ret[i] = smallTol; smallTol = 0; } return ret; } }; int main(){ Solution so; int num; vector<int> vec; cin >> num; vector<int> height; height.resize(num); for (int i = 0; i < num;i++) cin>>height[i]; cout << so.minStudentOut(height); system("pause"); return 0; }
相关文章推荐
- 严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis
- 【7.10-7.30】我的“在华信”
- Algorithms—228.Summary Ranges
- UIScrollView
- zTree初体验(二)——再续前缘
- linux CGI编程
- Python爬虫基础(一)--简单的url请求
- 【线段树I:点修改+区间查询】hdu 1754 I Hate It
- Java NIO:NIO概述
- [BZOJ4198][Noi2015]荷马史诗
- 增量式PID算法的C语言代码
- C++ 全局变量、局部变量、静态全局变量、静态局部变量的区别
- Python 删除字符串
- 【Android】利用AutoCompleteTextView控件联系人自动补全与根据联系人姓名查询电话
- Linux网卡bond的七种模式详解
- char与byte的区别
- Currency Exchange (POJ 1860)
- C#引用类型和值类型的区别
- 动态链接库编程范例
- HDU 2141~ Can you find it? 还是二分法~~