二维空间中给定的一组点的坐标,以任意两个点为直径绘制一个圆。求可以绘制的最大圆,满足该圆不包含其他点,输出直径
import java.util.*;import java.util.Scanner;public class Main{private static double res = -1;public static void main(String[] args){Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();scanner.nextLine();double[][] arr = new double[N][2];int k = 0;while(k < N) {String[] tmp = scanner.nextLine().split(" ");arr[k][0] = Double.valueOf(tmp[0]);arr[k][1] = Double.valueOf(tmp[1]);k++;}for (int i=0;i<N-1;i++) {for (int j=i+1;j<N;j++) {double tmp = cacDistance(arr[i], arr[j]);double[] o = {(arr[i][0] + arr[i][0])/2, (arr[i][1] + arr[i][1])/2};int count = 0;for (int m=0;m!=i && m!=j&& m <N;m++) {if (isInCir(tmp/2, o, arr[m])) {count++;}}if (count <= 1 && tmp >= res) res = tmp;}}res = Math.round(res);System.out.printf("%.3f", res);}public static double cacDistance(double[] p1, double[] p2){return Math.sqrt(Math.abs((p1[0] - p2[0])* (p1[0] - p2[0])+(p1[1] - p2[1])* (p1[1] - p2[1])));}public static boolean isInCir(double dis, double[] o, double[] p) {if (dis >= cacDistance(o, p)) {return true;}return false;}}