简易版之最短距离
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2083
代码如下:
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
int main()
{
int m, n, a[501], i, mid, sum;
scanf("%d", &m);
while (m--)
{
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(a, a+n);
mid = a[n/2]; //排序之后取中间值就是最优解
sum = 0;
for (i = 0; i < n; i++)
sum += abs(a[i] - mid);
printf("%d\n", sum);
}
return 0;
}

本文介绍了一种解决最短距离问题的方法,通过排序数组并选取中位数作为基准点来最小化所有点到该点的距离之和。这种方法简单有效,适用于特定类型的问题。
4万+

被折叠的 条评论
为什么被折叠?



