题目:
思路: 对一系列数中,排序后,找到差别最大的相邻两个数差距的一半 注意: 两个临界值,左右端点,最左灯和最右灯照射范围就是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> 输出保留两位小数