• java实现坐标


    * 已知平面上若干个点的坐标。
    需要求出在所有的组合中,4 个点间平均距离的最小值(四舍五入,保留 2 位小数)。
    比如有 4 个点:a,b,c,d,则平均距离是指:ab, ac, ad, bc, bd, cd 这 6 个距离的平均值。
    每个点的坐标表示为:横坐标,纵坐标
    坐标的取值范围是:1~1000
    所有点的坐标记录在 in.txt 中,请读入该文件,然后计算。
    注意:我们测试您的程序的时候,in.txt 可能会很大,比如包含上万条记录。
    举例:
    如果,in.txt 内的值为:
    10,10
    79
    20,20
    80,50
    10,20
    20,10
    则程序应该输出:
    11.38
    
    /*
    
    */
    package Question40_49;
    import java.awt.Point;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Vector;
    public class Question45ErrorDontUnderstand {
    public static double exeForward(Vector<Point>vpoints,Vector<Point>tpoints,int index) 
    {
    // for (Point point : tpoints) {
    // System.out.print("["+point.x+","+point.y+"]");
    // }
    // System.out.println();
    if(tpoints.size()==4){
    double 
    t=tpoints.get(0).distance(tpoints.get(1))+tpoints.get(0).distance(tpoints.get(2))+tpoin
    ts.get(0).distance(tpoints.get(3))
    +tpoints.get(1).distance(tpoints.get(2))+tpoints.get(1).distance(tpoints.get(3))+tp
    oints.get(2).distance(tpoints.get(3));
    t/=6;
    //System.out.println(t);
    return t;
    }else if (index<vpoints.size()) {
    Vector<Point>vector1=new Vector<Point>(tpoints);
    Vector<Point>vector2=new Vector<Point>(tpoints);
    vector2.add(vpoints.get(index));
    double min1=exeForward(vpoints, vector1, index+1);
    double min2=exeForward(vpoints, vector2, index+1);
    80
    return Math.min(min1, min2);
    }
    return Double.MAX_VALUE;
    }
    public static void main(String[] args) {
    try {
    File file=new File("in.txt");
    FileInputStream fileInputStream=new FileInputStream(file);
    InputStreamReader inputStreamReader=new InputStreamReader(fileInputStream);
    BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
    Vector<Point>vpoints=new Vector<Point>();
    String ts;
    while((ts=bufferedReader.readLine())!=null){
    String tss[]=ts.split("\,");
    Point point=new Point(Integer.parseInt(tss[0]), Integer.parseInt(tss[1]));
    vpoints.add(point);
    }
    Vector<Point> tpoints=new Vector<Point>();
    System.out.println(String.format("%.2f", exeForward(vpoints, tpoints, 0)));
    bufferedReader.close();
    } catch (FileNotFoundException e) {
    // TODO: handle exception
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    

    运行结果:
    11.38

  • 相关阅读:
    多种方法求解八数码问题
    C#中经常使用的几种读取XML文件的方法
    x86汇编指令具体解释
    数据结构排序系列详解之一 插入排序
    Java实现 蓝桥杯VIP 算法提高 师座操作系统
    Java实现 蓝桥杯VIP 算法提高 师座操作系统
    Java实现 蓝桥杯VIP 算法提高 盾神与砝码称重
    Java实现 蓝桥杯VIP 算法提高 盾神与砝码称重
    Java实现 蓝桥杯VIP 算法提高 盾神与砝码称重
    Java实现 蓝桥杯VIP 算法提高 盾神与砝码称重
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13076842.html
Copyright © 2020-2023  润新知