题目:
一条A点到B点的道路长 l ,现在为该条道路设置 n 个路灯,每个路灯照射的长度固定为 d ,假设这 n 个路灯分别设置在 a1,a2...ai...an ,(路灯可以设置在首尾A点B点处,也可以在同一点设置多个),求使得整条道路保持光明的最小 d。
输入:第一行为道路长度 l 以及路灯总数 n , 第二行为 n 个路灯的位置 a1,a2...ai...an 。
输出:d(保留两位小数)
我的解答:
import java.text.DecimalFormat;
import java.util.Scanner;
public class a {
public static int[] order(int[] A){
int n = 0;
for (int i = 0; i < A.length; i++) {
for(int j=i+1;j<A.length;j++){
if (A[i]>A[j]){
int temp = A[i];
A[i]=A[j];
A[j]=temp;
}
}
}
return A;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int l = s.nextInt();
Scanner scanner = new Scanner(System.in);
int [] light = new int[n];
for (int i = 0; i < light.length; i++) {
light[i]=scanner.nextInt();
}
order(light);
int m=0;
for (int i = 0; i < light.length-1; i++) {
int k = light[i+1]-light[i];
{if(k>m)
m=k;}
}
float d = (float)m/2;
float sta = light[0]-0;
float end = l-light[n-1];
float road;
if(sta>end)
road=sta;
else
road = end;
if(d>road)
road=d;
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(road));
}
}
需要注意的地方:虽然两个灯之间距离的一半就是范围d,但是要注意起点的第一个灯距起点和最后一个灯距离终点的距离,保证全部照亮。