hdu 2083 简易版之最短距离

题目

水题但是有必要说明一下,min设置成99999,但是sum有可能大于这个(题中说数据小于10000,所以sum最大可能为49995000),所以WA了,下面是AC代码和WA代码,主要是min的取值不同。

AC代码:

#include <stdio.h>
#include<math.h>
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
   int T,a[510],n;
   int i,j,tmp,Min;
   scanf("%d",&T);
    while(T--)
    {
       scanf("%d",&n);
       for( i=0;i<n;i++)
           scanf("%d",&a[i]);
           
        Min = 0;
        sort(a,a+n);
        for(i=1;i<n;i++)
            Min = Min + abs(a[i]-a[0]);

       for( i=0;i<n;i++)
       {
           int tmp = 0;
           for( j=0;j<n;j++)
           {
               tmp += abs(a[j]-a[i]);
           }
           if(tmp < Min ) Min = tmp;
       }
       printf("%d
",Min);
    }
    return 0;
}

WA代码:

#include <stdio.h>
#include<math.h>
int main()
{
   int T,a[510],n;
   int i,j,tmp,Min;
   scanf("%d",&T);
    while(T--)
    {
       scanf("%d",&n);
       for( i=0;i<n;i++)
           scanf("%d",&a[i]);
           
        Min = 99999;
       for( i=0;i<n;i++)
       {
           int tmp = 0;
           for( j=0;j<n;j++)
           {
               tmp += abs(a[j]-a[i]);
           }
           if(tmp < Min ) Min = tmp;
       }
       printf("%d
",Min);
    }
    return 0;
}

原文地址:https://www.cnblogs.com/qie-wei/p/10160200.html