云云豆酱 2023-03-06 19:58 采纳率: 75%
浏览 49
已结题

蓝桥杯 平面点集中4点最小平均距离

题目描述
已知平面上若干个点的坐标。

需要求出在所有的组合中,4 个点间平均距离的最小值(四舍五入,保留 2 位小数)。
比如有 4 个点:a,b,c,d, 则平均距离是指:ab, ac, ad, bc, bd, cd 这 6 个距离的平均值。

输入描述
输入多行(可能包含上万行),每行两个数字 x,y\ (1 \leq x,y \leq 1000)x,y (1≤x,y≤1000),表示每个点的坐标。

输出描述
输出一行,在所有的组合中,4 个点间平均距离的最小值(四舍五入,保留 2 位小数)。

输入输出样例
示例
输入

10,10
20,20
80,50
10,20
20,10

输出

11.38

  • 写回答

2条回答 默认 最新

  • pzzhao 2023-03-06 20:20
    关注

    该回答引用自ChatGPT
    先贴本人本地执行结果

    img

    这个是我根据chatGPT代码修改的。

    最近感觉chatGPT给的代码经常有问题

    import java.util.*;
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            double min = Integer.MAX_VALUE;
            //先将点存储在Point数组里面
            ArrayList<Point> list = new ArrayList<>();
            String line = "";
            while (!("").equals(line=sc.nextLine())) {
                String[] s = line.split(",");
                list.add(new Point(Integer.parseInt(s[0]), Integer.parseInt(s[1])));
            }
            //穷举所有四个点的组合
            for (int i = 0; i < list.size(); i++) {
                for (int j = i + 1; j < list.size(); j++) {
                    for (int k = j + 1; k < list.size(); k++) {
                        for (int l = k + 1; l < list.size(); l++) {
                            double sum = 0;
                            //计算平均距离
                            sum += getDistance(list.get(i), list.get(j));
                            sum += getDistance(list.get(i), list.get(k));
                            sum += getDistance(list.get(i), list.get(l));
                            sum += getDistance(list.get(j), list.get(k));
                            sum += getDistance(list.get(j), list.get(l));
                            sum += getDistance(list.get(k), list.get(l));
                            sum /= 6;
                            if (sum < min) {
                                min = sum;
                            }
                        }
                    }
                }
            }
            System.out.printf("%.02f", min);
        }
        //计算两点之间距离
        public static double getDistance(Point a, Point b) {
            return Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2));
        }
    }
    class Point {
        int x;
        int y;
        public Point(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月21日
  • 已采纳回答 3月13日
  • 创建了问题 3月6日

悬赏问题

  • ¥15 有偿请人帮写个安卓系统下禁止装软件及禁止拷入文件的程序
  • ¥100 用 H.265 对音视频硬编码 (CUDA)
  • ¥20 mpich安装完成后出问题
  • ¥15 multisim仿真
  • ¥15 stm32循迹小车代码问题
  • ¥15 输入一堆单词,使其去重输出
  • ¥15 qc代码,修改和添加东西
  • ¥50 Unity的粒子系统使用shadergraph(内置管线)制作的一个顶点偏移shader,但是粒子模型移动时,顶点也会偏移
  • ¥15 如何用python处理excel的数据(极值标准化)
  • ¥15 三向应力状态求剪应力