ps:N个数中,中位数是最小距离。。。第一次WA是因为排序之后最小和最大相加除2.。。应该是找他们的中位数,而不是中间数。
代码:
#include "stdio.h" #include "stdlib.h" #include "math.h" int cal(int a[],int n){ int i,j,k; for(i=0;i<n;i++){ for(j=0;j<n-i-1;j++){ if(a[j]>a[j+1]){ k=a[j]; a[j]=a[j+1]; a[j+1]=k; } } } return 0; } int main(){ int M,N,k,i,a[510],sum; scanf("%d",&M); while(M--){ scanf("%d",&N); for(i=0;i<N;i++){ scanf("%d",&a[i]); } cal(a,N); sum=0; for(i=0;i<N;i++){ sum+=abs(a[i]-a[N/2]); } printf("%d\n",sum); } return 0; }
原文:http://www.cnblogs.com/sureli/p/5285917.html