賽碼網-基本演算法-4.路燈
阿新 • • 發佈:2019-01-03
題目描述
V先生有一天工作到很晚,回家的時候要穿過一條長l的筆直的街道,這條街道上有n個路燈。假設這條街起點為0,終點為l,第i個路燈座標為ai。路燈發光能力以正數d來衡量,其中d表示路燈能夠照亮的街道上的點與路燈的最遠距離,所有路燈發光能力相同。為了讓V先生看清回家的路,路燈必須照亮整條街道,又為了節省電力希望找到最小的d是多少?
輸入
輸入兩行資料,第一行是兩個整數:路燈數目n (1≤n≤1000),街道長度l (1 ≤l≤109)。第二行有n個整數ai (0 ≤ ai≤ l),表示路燈座標,多個路燈可以在同一個點,也可以安放在終點位置。 |
樣例輸入 7 15 15 5 3 7 9 14 0 |
輸出
輸出能夠照亮整個街道的最小d,保留兩位小數。 |
樣例輸出
2.50 |
時間限制C/C++語言:1000MS其它語言:3000MS | 記憶體限制C/C++語言:65536KB其它語言:589824KB |
解答:
import java.util.Arrays; import java.util.Scanner; /** * Created by Administrator on 2017/4/27. */ public class four_StreetLamp { public static void main(String args[]){ java.text.DecimalFormat decimalFormat=new java.text.DecimalFormat("#.00"); Scanner scanner=new Scanner(System.in); int x=0;int y=0; double p=0;double q=0; int left=1;int right=1; int n=scanner.nextInt(); int l=scanner.nextInt(); int Streetlamp[]=new int[n]; for(int i=0;i<n;i++){ Streetlamp[i]=scanner.nextInt(); if(Streetlamp[i]==0) left=0; if(Streetlamp[i]==l) right=0; } Arrays.sort(Streetlamp); if(left==1) p=Streetlamp[0]-0; if(right==1) q=l-Streetlamp[n-1]; for(int i=0;i<n-1;i++){ y=Streetlamp[i+1]-Streetlamp[i]; if(y>x) x=y; } double z=(double)x/2; double max1=(p>q)?p:q; double max2=(z>max1)?z:max1; System.out.println(decimalFormat.format(max2)); } }