题目描述:
给定平面上n个点,找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的。
输入:
第一行:n;2≤n≤60000
接下来n行:每行两个实数:x y,表示一个点的行坐标和列坐标,中间用一个空格隔开。
输出:
仅一行,一个实数,表示最短距离,精确到小数点后面4位。
样例输入:
3
1 1
1 2
2 2
样例输出:
1.0000
蛮力法参考代码:
#include <stdio.h>
#include <math.h>
#define INF 0x3f3f3f3f
int n;
double x[60001];
double y[60001];
double cp()
{
int i,j;
double dist,mindist=INF;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
dist=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);
if(dist<mindist)
mindist=dist;
}
}
return mindist;
}
int main()
{
scanf("%d",&n);
int i;
for(i=0;i<n