题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2083
题目要求:
做题思路:
大致思路就是在一条线上寻找一个最佳点,使得距离最短
凭感觉不难看出,中间是最佳点
于是乎,排序,取中值。
代码:
#include "stdio.h"
void sort(int a[],int m) {
int i,j,t;
for (i = 0;i < m;i++) {
for (j = 0;j < m-i;j++) {
if(a[j] > a[j+1]) {
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
}
int main() {
int n,m,a[501],i,mid,sum;
scanf("%d",&n);
while (n-- > 0) {
scanf("%d",&m);
for (i = 0;i < m;i++) {
scanf("%d",&a[i]);
}
sort(a,m);
mid = m/2;
sum = 0;
for(i = 0;i < m;i++) {
sum += abs(a[i]-a[mid]);
}
printf("%d\n",sum);
}
}
刚开始忘加绝对值符号,值一直算不对,其它的总体来说还过得去