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

蓝桥杯 平面点集中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 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制