SCAU 暴力法求最近点对

由键盘输入n(n<50)个点的坐标x,y(x,y<1000,浮点数),计算出最近两个点的距离。(保留三位小数)

#include <stdio.h>
#include <stdlib.h>
#include<math.h>

double distance(double x1, double y1, double x2, double y2)
{
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main()
{
    int n,i,j;
    double sands;
    scanf("%d",&n);
    double a[50][2];
    for(i=0;i<n;i++)
    {
        for(j=0;j<2;j++)
        {
           scanf("%lf",&a[i][j]);
        }
    }
     double len=distance(a[0][0],a[0][1],a[1][0],a[1][1]);
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            sands=distance(a[i][0],a[i][1],a[j][0],a[j][1]);
            if(sands<len)
                len=sands;
        }
    }
    printf("%.3lf",len);
}

猜你喜欢

转载自blog.csdn.net/weixin_43389852/article/details/83689851