题目描述
V先生有一天工作到很晚,回家的时候要穿过一条长l的笔直的街道,这条街道上有n个路灯。假设这条街起点为0,终点为l,第i个路灯坐标为ai。路灯发光能力以正数d来衡量,其中d表示路灯能够照亮的街道上的点与路灯的最远距离,所有路灯发光能力相同。为了让V先生看清回家的路,路灯必须照亮整条街道,又为了节省电力希望找到最小的d是多少?
主要思路:
这道题目就是计算两个路灯之间的最大值,但是必须特别分析第一个路灯和最后一个路灯。
第一个路灯是必须照到起点到该路灯的距离的,而最后一个路灯也是一样,必须照到终点到该路灯的距离。
见代码:
import java.util.Arrays;
import java.util.Scanner;
/**
* 路灯
*/
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int len = scanner.nextInt();
int arr[] = new int[num];
for(int i=0;i < num; i++){
arr[i] = scanner.nextInt();
}
Arrays.sort(arr);
int max = 0;
//统计每两个路灯之间距离的最大值
for(int i =1; i< num; i++){
max = Math.max(max,arr[i]-arr[i-1]);
}
//在第一个和最后一个路灯的照射半径应该是arr[0]和len-arr[num-1]
System.out.printf("%.2f",Math.max(Math.max(arr[0],max/2.0),len-arr[num-1]));
}
}