解题思路:因题目的距离公式为:[x1-x2]+[y1-y2]。可以知道,我们可以将居民点的横纵坐标分别分成
排序好的两个数组。拿x的数组来说,求出x1~xn中的一点,这个点满足各点到这点的距离之和最小
不难发现这个点就是Xn/2。这点也就是邮局选址的横坐标。
此题借鉴:https://blog.csdn.net/qq_36793206/article/details/79949714
他是c++写的
注意事项:
参考代码:#include<stdio.h>
#include<math.h>
int main()
{
int n,a,b,i,j,k=0,sum=0,x[10000],y[10000];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&x[i],&y[i]);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(x[i]>x[j])
{
k=x[i];
x[i]=x[j];
x[j]=k;
}
if(y[i]>y[j])
{
k=y[i];
y[i]=y[j];
y[j]=k;
}
}
}
a=x[n/2];
b=y[n/2];
for(i=0;i<n;i++)
{
sum+=fabs(a-x[i]);
sum+=fabs(b-y[i]);
}
printf("%d\n",sum);
return 0;
}
0.0分
0 人评分
【计算两点间的距离】 (C语言代码)浏览:1473 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:551 |
简单的a+b (C语言代码)浏览:944 |
陈教主的三角形 (C语言代码)浏览:1140 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:509 |
【计算直线的交点数】 (C语言代码)浏览:916 |
杨辉三角 (C语言代码)浏览:676 |
简单的a+b (C语言代码)浏览:580 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:449 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:589 |