【算法题】庆祝61
来源:互联网 发布:程序员年终工作汇报 编辑:程序博客网 时间:2024/06/06 03:45
牛家庄幼儿园为庆祝61儿童节举办庆祝活动,庆祝活动中有一个节目是小朋友们围成一个圆圈跳舞。牛老师挑选出n个小朋友参与跳舞节目,已知每个小朋友的身高h_i。为了让舞蹈看起来和谐,牛老师需要让跳舞的圆圈队形中相邻小朋友的身高差的最大值最小,牛老师犯了难,希望你能帮帮他。
如样例所示:
当圆圈队伍按照100,98,103,105顺时针排列的时候最大身高差为5,其他排列不会得到更优的解输入描述:
输入包括两行,第一行为一个正整数n(3 ≤ n ≤ 20)
第二行为n个整数h_i(80 ≤ h_i ≤ 140),表示每个小朋友的身高。输出描述:
输出一个整数,表示满足条件下的相邻小朋友身高差的最大值。输入例子:
4
100 103 98 105输出例子:
5
分析:
对小朋友按身高排序,
使用dp[i]表示前i个小朋友最优的排列身高差最大值
#include <vector>#include <iostream>#include <string>#include <numeric>#include <hash_set>#include <algorithm>using namespace std;#define debug_int func(vector<int>& vec){ if (vec.size()<2) { return -1; } sort(vec.begin(), vec.end()); if (vec.size() == 2) { return vec[1] - vec[0]; } int my_max(0); for (auto i = 2;i<vec.size();++i) { my_max = max(vec[i] - vec[i - 2],my_max); } return my_max;}int main(){ int n; vector<int> vec;#ifdef debug_ n = 4; int array[4]{100,103,98,105}; vec.insert(vec.begin(),array,array+4);#else cin>>n; vec.resize(n); for (auto i = 0;i<n;++i) { cin>>vec[i]; }#endif cout<<func(vec); return 0;}
阅读全文
0 0
- 【算法题】庆祝61
- [编程题] 庆祝61
- 庆祝61
- 庆祝
- 庆祝
- 庆祝
- 庆祝:)
- 庆祝
- 庆祝
- 庆祝~~
- 庆祝。~
- 庆祝庆祝!
- Blog 开通!~ 庆祝庆祝 ~
- 庆祝POJ做题过一百(MARK一下)
- 休息一下…… 突破200题,为自己庆祝。
- 【平衡树第一题庆祝】BZOJ1588HNOI2002营业额统计SBT做法
- 庆祝开张
- 庆祝开张!
- Python 基础语法与数据类型
- redis集群报错,(error) MOVED 15495 127.0.0.1:7003
- 浏览器访问优化
- Leetcode——17. Letter Combinations of a Phone Number
- 交换输出
- 【算法题】庆祝61
- 2017吉比特校招一个编程笔试题
- 1!+2!+3!+.....+n! 10
- javascript--面向对象(二)构造函数式的缺点和原型prototype
- python 关于join 函数需要注意的一点
- 斐讯K2一键刷华硕固件支持最新固件22.5.10.176
- powervm虚拟化分析
- 研究生必读
- mysql主从复制配置