备考蓝桥杯(36)平均距离最小的4个点(超级经典exeforward案例)
2018-04-02 17:37
513 查看
package pers.robert.lanqiaobeizhenti129; 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; /** * 45.平面4点最小距离 已知平面上若干个点的坐标。 需要求出在所有的组合中,4个点间平均距离的最小值(四舍五入,保留2位小数)。 比如有4个点:a,b,c,d,则平均距离是指:ab, ac, ad, bc, bd, cd 这6个距离的平均值。 每个点的坐标表示为:横坐标,纵坐标 坐标的取值范围是:1~1000 所有点的坐标记录在in.txt中,请读入该文件,然后计算。 注意:我们测试您的程序的时候,in.txt 可能会很大,比如包含上万条记录。 举例: 如果,in.txt 内的值为: 10,10 20,20 80,50 10,20 20,10 则程序应该输出: 11.38 * @author Robert * */ public class The045FourPointDistanceDemo1_question { 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){//第二个参数的长度是4,也就是第二个参数放进去了4个点 double t=tpoints.get(0).distance(tpoints.get(1))+tpoints.get(0).distance(tpoints.get(2))+tpoints.get(0).distance(tpoints.get(3)) +tpoints.get(1).distance(tpoints.get(2))+tpoints.get(1).distance(tpoints.get(3))+tpoints.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)); //这里指的的vector1 没有放入第Index个点,vector2是放入 了第index个点的,这里就决定了每个点组合的顺序abcd的顺序 double min1=exeForward(vpoints, vector1, index+1); double min2=exeForward(vpoints, vector2, index+1); 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: h 4000 andle exception } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
相关文章推荐
- 备考蓝桥杯(37)超级无敌经典的全排列算法 java实现
- 已知平面上若干个点的坐标。需要求出在所有的组合中,4个点间平均距离的最小值(四舍五入,保留2位小数)。
- 备考蓝桥杯(34)泊松汾酒java实现exeforward
- 备考蓝桥杯(30)奇怪的比赛java实现(exeforward)
- 最小生成树+树的平均距离-HDU-5723-Abandoned country
- 蓝桥杯备考(15)NQueen(经典回溯) java实现
- 蓝桥杯——平面4点最小距离
- 如何拉动内需,击中客户深层需求,4个经典案例分析!
- 经典算法 | 字符串最小编辑距离分析与证明
- Python 梯度下降实现案例(求空间内一点到其它所有点距离之和最小 )
- 蓝桥杯---平面四点最小距离
- 经典算法 | 给定数轴上点,寻找一个点到其他点的距离之和最小
- Hadoop经典案例Spark实现(四)——平均成绩
- 如何拉动内需,击中客户深层需求,4个经典案例分析!
- 4个经典案例:国外社交媒体是这样病毒性营销的
- poj3356 AGTC(经典DP最小编辑距离)
- 蓝桥杯全国软件大赛试题——java最小距离问题
- hdu_3400_三分_求两条直线间的最小距离_经典二重三分
- MapReduce经典案例——求平均分数
- Hadoop经典案例Spark实现(五)——求最大最小值问题