第三题因为把取平方根算成了绝对值还看不出来来不及测试。。。有什么数据可以测试一下吗?或者老哥们能看下有什么问题吗。


import java.util.ArrayList;
        import java.util.Collections;
        import java.util.Scanner;


public class Main{


    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] x = new int[n];
        int[] y = new int[n];
        for(int i = 0; i < n; i++){
            x[i] = in.nextInt();
            y[i] = in.nextInt();
        }
        int[][] distance = new int[n][n];
        ArrayList<Point> list = new ArrayList<>();
        for(int i = 0; i < n; i++){
            for(int j = i + 1; j < n; j++){
                int a = x[i]-x[j];
                int b = y[i] - y[j];
                double d = Math.pow(Math.pow((double)a,2) + Math.pow((double)b,2),0.5);
                Point point = new Point(i,j,d );
                list.add(point);
            }
        }
        for(int i = 0; i<n;i++){
            Point p = list.get(i);
        }
        //保存半径,初始化-1
        double[] len = new double[n];
        for(int i = 0; i<len.length;i++) len[i] = -1;
        Collections.sort(list, (o1, o2) -> Double.compare(o1.distance,o2.distance));
        //从最短看是更新他们的半径。
        for(int i = 0; i < n; i++){
            Point p = list.get(i);

            if(len[p.i] >0) len[p.j] = p.distance-p.i;
            else if(len[p.j] >0) len[p.i] = p.distance-p.j;
            else {
                len[p.i] = p.distance/2;
                len[p.j] = p.distance/2;
            }
        }
        for(double d:len){
            System.out.print(String .format("%.3f",d)+ " ");
        }
    }
}

class Point{
    int i;
    int j;
    double distance;
    public Point(int i, int j ,double distance){
        this.i = i;
        this.j = j;
        this.distance = distance;
    }
}