算法题:路灯

    xiaoxiao2025-11-01  5

    题目:

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

    转载请注明原文地址: https://ju.6miu.com/read-1303743.html
    最新回复(0)