码迷,mamicode.com
首页 > 其他好文 > 详细

2016网易笔试路灯问题

时间:2015-09-24 12:58:37      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

题目:

一条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,但是要注意起点的第一个灯距起点和最后一个灯距离终点的距离,保证全部照亮。

2016网易笔试路灯问题

标签:

原文地址:http://www.cnblogs.com/qingshuisengren/p/4834712.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!