第三题因为把取平方根算成了绝对值还看不出来来不及测试。。。有什么数据可以测试一下吗?或者老哥们能看下有什么问题吗。 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;     } }
点赞 1

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务