700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 全国高校计算机能力挑战赛(初赛)Java试题三

全国高校计算机能力挑战赛(初赛)Java试题三

时间:2021-11-22 21:56:03

相关推荐

全国高校计算机能力挑战赛(初赛)Java试题三

二维空间中给定的一组点的坐标,以任意两个点为直径绘制一个圆。求可以绘制的最大圆,满足该圆不包含其他点,输出直径

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;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。