杭电OJ--2083

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

题目要求:

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容