2016网易笔试路灯问题

题目:

一条A点到B点的道路长 l ,现在为该条道路设置 n 个路灯,每个路灯照射的长度固定为 d ,假设这 n 个路灯分别设置在 a1,a2...ai...an ,(路灯可以设置在首尾AB点处,也可以在同一点设置多个),求使得整条道路保持光明的最小 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,但是要注意起点的第一个灯距起点和最后一个灯距离终点的距离,保证全部照亮。
posted @ 2015-09-24 11:17  清水僧人Robin  阅读(244)  评论(0编辑  收藏  举报