由键盘输入n(n<50)个点的坐标x,y(x,y<1000,浮点数),计算出最近两个点的距离。(保留三位小数)
输入格式
输入第一个整数为有n个点,此后分别为n个的坐标x y
输入样例
3
0 0
1 2
2 2
输出样例
1.000
#include<stdio.h>
#include<math.h>
double min_dis(double points[50][2],int n);
double dist(double a,double b,double c,double d);
double dist(double a,double b,double c,double d)
{
return sqrt( (a-c)*(a-c) + (b-d)*(b-d) );
}
double min_dis(double points[50][2],int n)
{
double dis_n,min=10000000;
int i,j;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
dis_n=dist(points[i][0],points[i][1],points[j][0],points[j][1]);
if(min>dis_n) min=dis_n;
}
}
return min;
}
int main()
{
int n,i,j;
double points[50][2],min;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<2;j++)
{
scanf("%lf",&points[i][j]);
}
}
min=min_dis(points,n);
printf("%.3lf",min);
return 0;
}