题目:
思路:
对一系列数中,排序后,找到差别最大的相邻两个数差距的一半
注意:
两个临界值,左右端点,最左灯和最右灯照射范围就是d 了,不是上面的一半了。
注意:max必须为double类型的!!!之前定义成int类型的,AC一直是60%...气哭了
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Scanner;
public class case01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
int L=sc.nextInt();
int [] zb = new int[n];
for(int i=0;i<n;i++){
zb[i]=sc.nextInt();
}
Arrays.sort(zb);
double max= Math.max(zb[0]*2,(L-zb[n-1])*2);//此处必须是double!!!!
for(int i=0;i<n-2;i++){
max = Math.max(zb[i+1]-zb[i], max);
}
DecimalFormat df = new DecimalFormat("#0.00");
System.out.println(df.format(max/2));
}
}
}
小知识点:
1.
<span style="font-size:18px;">Math.max(zb[0]*2,(L-zb[n-1])*2)</span>
返回两个数中较大的一个
2.
<span style="font-size:18px;"> DecimalFormat df = new DecimalFormat("#0.00");
System.out.println(df.format(max/2));</span>
输出保留两位小数