1. 程式人生 > >最近對問題(蠻力法)

最近對問題(蠻力法)

問題描述:最近對問題是求解平面點集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)