最近對問題(蠻力法)
阿新 • • 發佈:2018-12-12
問題描述:最近對問題是求解平面點集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)