题目描述
已知平面上若干个点的坐标。
需要求出在所有的组合中,4个点间平均距离的最小值(四舍五入,保留2位小数)。
比如有4个点:a,b,c,d, 则平均距离是指:ab, ac, ad, bc, bd, cd 这6个距离的平均值。
每个点的坐标表示为:横坐标,纵坐标
坐标的取值范围是:1~1000
输入
暂无
输出
暂无
样例输入
10,10
20,20
80,50
10,20
20,10
样例输出
11.38
参考代码
#include<stdio.h>
#include<math.h>
float x[100],y[100];
float lu(int a,int b,int c,int d)
{
return sqrt((x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b]))+sqrt((x[a]-x[c])*(x[a]-x[c])+(y[a]-y[c])*(y[a]-y[c]))+sqrt((x[a]-x[d])*(x[a]-x[d])+(y[a]-y[d])*(y[a]-y[d]))+sqrt((x[b]-x[c])*(x[b]-x[c])+(y[b]-y[c])*(y[b]-y[c]))+sqrt((x[b]-x[d])*(x[b]-x[d])+(y[b]-y[d])*(y[b]-y[d]))+sqrt((x[c]-x[d])*(x[c]-x[d])+(y[c]-y[d])*(y[c]-y[d]));
}
int main()
{
float shu,min=1000000;
int i,j,m,n,k,l;
i=0;
while(scanf("%f,%f",&x[i],&y[i])!=EOF)
i++;
n=i;
for (i=0;i<n-3;i++)
{
for (j=i+1;j<n-2;j++)
{
for (k=j+1;k<n-1;k++)
{
for (l=k+1;l<n;l++)
{
shu=lu(i,j,k,l);
if(min>shu)
min=shu;
}
}
}
}
printf("%.2f",min/6);
}
解析
暂无