问题描述:最近对问题是求解平面点集n个点中距离最近的两个点间的问题。为简单起见,在二维坐标平面来考虑该问题。如果讨论的点以标准二维坐标形式给出,则有点Pi(Xi,Yi)和Pj(Xj,Yj),二者的两点间距离可以利用公式d(Pi,Pj)=√(Xj-Xi)*(Xj-Xi)+(Yj-Yi)*(Yj-Yi)。通过这个公式,可以计算平面上任意两点之间的距离。
因此,蛮力法求解思路就是对平面n个点两两组队,计算并记录最小距离。
public class zuijindui {
public static void main(String[] args) {
// TODO Auto-generated method stub
AA a=new AA();
a.ClosePoint();
}
}
class AA{
int x[]={0,2,4,1,1};
int y[]={0,1,2,3,1};
int i,j;
int n=x.length;
int ind1=0,ind2=0;
int dis;
int mind=9999;
void ClosePoint() {
for(i=0;i<n-1;i++) {
for(j=i+1;j<n;j++) {
dis=(x[j]-x[i])*(x[j]-x[i])+(y[j]-y[i])*(y[j]-y[i]);
if(dis<mind) {
mind=dis;
ind1=i;
ind2=j;
}
}
}
System.out.println("第一个点的坐标为:("+x[ind1]+","+y[ind1]+")");
System.out.println("第二个点的坐标为:("+x[ind2]+","+y[ind2]+")");
// System.out.println(mind);
}
}
结果:
第一个点的坐标为:(2,1)
第二个点的坐标为:(1,1)