网络知识 娱乐 java 坐标类_java实现坐标

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(Vectorvpoints,Vectortpoints,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

Vectorvector1=new Vector(tpoints);

Vectorvector2=new Vector(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);

Vectorvpoints=new Vector();

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 tpoints=new Vector();

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