牛客网-IT校招全国统一模拟笔试Java专场(秋招备战专场二模)
来源:互联网 发布:java socket传输byte 编辑:程序博客网 时间:2024/05/12 03:10
题目:牛家庄幼儿园为庆祝61儿童节举办庆祝活动,庆祝活动中有一个节目是小朋友围成一个圆圈跳舞。牛老师挑选出n个小朋友参与跳舞节目,已知每个小朋友的身高h_i.为了让舞蹈看起来和谐,牛老师需要让跳舞的圆圈队形中相邻的小朋友的身高差的最大值最小,牛老师犯了难,希望你能帮帮他。
如样例所示:
当圆圈队伍按照100.98,103,105顺时针排列的时候最大身高差为5,其他排列不会得到更优的解。
输入描述:输入包括两行,第一行为一个正整数n(3<=n<=20),第二行为n个整数h_i(80<=h_i<=140),表示每个小朋友的身高。
解题思路:
/*枚举排列来计算肯定是不可行的。。
考虑我们已经将身高升序排序了,然后对于前k个小朋友组成队形的身高差的最大值的最小值为f(k),并且第k个和第(k-1)个小朋友是相邻的。
现在我们加入第(k+1)个小朋友,考虑到第(k + 1)个小朋友身高是大于等于前面的小朋友,插入队形之后,第(k + 1)个小朋友一定与两个小朋友相邻,
所以当我们将第(k + 1)个小朋友插入到第k个和第(k - 1)个小朋友中间可以得到f(k + 1)的下界一定是max(f(k), h[k] - h[k - 2]),
我们又注意到这样插入之后第(k + 1)个和第k个小朋友还是相邻的,于是这样可以一直推广下去。考虑最初3个小朋友的时候这样也是可行的,
于是问题变成了求max(h[i] - h[i - 2])。可以写出很简洁的代码。
*/
public class Test1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] array = new int[n]; for(int i=0; i<n; i++){ array[i] = sc.nextInt(); } Arrays.sort(array); int minOfMax = 0; for(int i=2; i<n; i++){ minOfMax = Math.max(minOfMax, array[i]-array[i-2]); } System.out.println(minOfMax); }}
输入:5 100 109 105 103 100输出:6
阅读全文
2 3
- 牛客网-IT校招全国统一模拟笔试Java专场(秋招备战专场二模)
- 【牛客网】2017-IT校招全国统一模拟笔试(秋招备战专场) 编程题 --组队竞赛
- 2017校招全国统一模拟笔试第一场-编程题(8题)-牛客网(java)
- 2017年华为大牛专场(软件类)校招笔试回忆版
- 360 2017春招 北邮专场
- IT专场
- 2017校招全国笔试第二唱
- 秋招总结春招备战
- 阿里2018秋招模拟笔试Java研发岗试题
- 2017校招全国统一模拟考试(第五场)JavaScript解法记录(题目来源-->牛客网)
- 牛客网互联网秋招模拟笔试编程题第三题
- 2017秋招,网易校招网络笔试第二题,java实现
- 备战秋招复习之HashMap
- 小米校招笔试题(java)
- 2014校招笔试
- 阿里校招笔试
- WAP校招笔试
- 校招笔试题
- 各大型邮箱smtp服务器及端口收集
- 修复调用新浪微博第三方登录,显示重定向错误问题
- 股票资金建仓分仓补仓计算器
- POJ 2251 Dungeon Master 笔记
- 编程与数学公式
- 牛客网-IT校招全国统一模拟笔试Java专场(秋招备战专场二模)
- Java学习:输出任意多维数组(多维数组非矩形)
- 交错正负数
- asp.net MVC (1) 浅析MVC及新建Hellowrold
- 使用LitePal实现数据库的登录和注册
- 【动规】多边形游戏
- Qt官方开发环境生成的exe发布方式--使用windeployqt
- 计算二进制中1的个数
- Caffe深度学习进阶之Cifar-10分类任务(上)