zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    计时器插件以及组件示例
    表单提交
    使用vue-awesome-swiper笔记
    使用vue-baidu-map开发地图找房的总结
    下拉加载使用dropload使用笔记
    前端知识摘要
    我不知道的css
    百度小程序笔记
    微信小程序笔记
    图片上传以及图片压缩
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947175.html
Copyright © 2011-2022 走看看