杭电OJ--2083

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2083

题目要求:

杭电OJ--2083_第1张图片
image.png

做题思路:

大致思路就是在一条线上寻找一个最佳点,使得距离最短
凭感觉不难看出,中间是最佳点
于是乎,排序,取中值。

代码:

#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);
    }
}

刚开始忘加绝对值符号,值一直算不对,其它的总体来说还过得去

你可能感兴趣的:(杭电OJ--2083)