爬行的蚂蚁-Java-2017百度秋招
2017-05-27 15:20
218 查看
package 百度; import java.util.Scanner; /** * 题目描述: * 有些蚂蚁在一条水平线上爬行,每只蚂蚁的速率都是1cm/s。蚂蚁爬到水平线的任何一个端点时会立刻掉下来,当两只蚂蚁碰到一起时他们都会立刻调头向相反方向移动。 * 已知蚂蚁们在水平线上的初始位置,但不幸的是,它们初始的运动方向是不知道的。请计算所有蚂蚁从水平线上掉下来可能所需的最早和最晚的时间。 * * 输入 :第一行有一个整数,表示有多少组测试数据。 * 每组测试数据以两个整数开始:水平线长度(单位cm)和蚂蚁数,随后的一行中有n个整数,表示每只蚂蚁距水平线左端点的距离。所有的输入的整数都小于1000000而且用空格隔开。 * 样例输入 2 * 10 3 * 2 6 7 * 214 7 * 11 12 7 13 176 23 191 * * 输出: 对于每组测试数据,在同一行输出两个整数,第一个表示所有蚂蚁从水平线上掉下来的最早时间,第二个表示最晚时间。 * 样例输出 4 8 * 38 207 * * @author 崔洪振367 * @version 创建时间:2017年5月15日 下午4:41:06 * * 解题思路:在给定的水平线上寻找两个值:一个值是距离某个端点最近,另一个值距离某个端点最远。输出这两个值。 * 最远的距离也就是离着最近的端点的相反端点。比如:水平长度为10,则2的最近点是0,最远距离是10-2=8. */ public class Q2017秋招_爬行的蚂蚁 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { int T = scanner.nextInt(); for(int t=0; t<T; t++){ int len = scanner.nextInt();//水平长度 int ant = scanner.nextInt();//蚂蚁数目 int[] ants = new int[ant];//每只蚂蚁距离 int lens = len / 2;//水平中点长度 for(int i=0; i<ant; i++){ int dis = scanner.nextInt(); if(lens >= dis){ ants[i] = dis; }else { ants[i] = len - dis;//全长-远距离=近距离 } } int max = 0; int min = lens; for(int i=0; i<ant; i++){ max = Math.max(max, ants[i]);//要所有蚂蚁都掉下来,则最早时间是位于中点位置处的蚂蚁到达端点的时间 min = Math.min(min, ants[i]);//最晚掉下来的蚂蚁是距离一个端点最近的相反方向的端点。 } System.out.println(max + " " + (len-min)); } } } }
相关文章推荐
- 百度2017校招java研发在线笔试
- 2017百度实习生春招java笔试题 不等式数列
- 百度面试题--5只蚂蚁走木棍问题的非递归解法(Java调试通过)
- 2017百度实习生春招java笔试题 输出第三便宜价格
- 2017阿里,百度,京东java面试+笔试大合集
- 度度熊找子串(百度2017秋招真题)--java
- 百度实习2017 编程题 Java
- 比赛组队-Java-2017百度秋招
- 2017阿里,百度,京东java面试+笔试大合集,2018的你会吗?
- 百度笔试编程题:爬行的蚂蚁(c++)
- 百度2017春招<度度熊回家问题>Java代码
- 百度2017春招<度度熊买帽子问题>Java代码
- JAVA代码—算法基础:蚂蚁爬行问题
- 百度面试题目-5只蚂蚁
- “网络蚂蚁”的Java实现
- 百度面试题的java实现
- “网络蚂蚁”的Java实现
- 用java编写“百度广告点击机器人”
- 【原创】蚂蚁爬杆问题之java实现
- 百度面试题蚂蚁(C#)