大明是一个购物狂,他喜欢在一条很长的直线街道上购物,每次他都会开着车去。
因为那条街很长,大明要先把车停在那条街上的某个商店门口,然后去所有的商店买东西,但是为了避免携带东西进入商店,因此,他总是在每个商店购物后,先回到停车点把刚刚购买到的商品放到车上后,然后再去新的一家商店购物。
假设有3家店,坐标分别为7,30,41。
若大明停车在第1家店,走的总路程等于((7-7)+(30-7)+(41-7))x2=114;若大明停车在第2家店,走的总路程等于((30-7)+(30-30)+(41-30))x2=68;若大明停车在第3家店,走的总路程等于((41-7)+(41-30)+(41-41))x2=90;
大明希望能找到最佳一个停车点(注意,必须是某个商店门口),使得他走的路最短,请你帮帮他。
输入格式:
测试数据有多组,首先输入组数T,然后T组测试。
每组测试首先是一个n(1 <= n <= 100),表示商店的个数。接下来有n个值小于1000的非负整数,表示每个商店的位置。
输出格式:
对于每组测试,输出大明需要走的最短距离。
输入样例:
2
2 20 15
3 7 30 41
输出样例:
10
68
本人代码如下:
#include<stdio.h>
#include<math.h>
int min(int a,int b)
{
return a<b?a:b;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n; scanf("%d",&n);
int a[n],i,j,sum=0;
int compare=10000000;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
sum += abs(a[i]-a[j]);
}
sum *= 2;
compare=min(compare,sum);
}
printf("%d\n",compare);
}
}
运行结果:
不知道哪一步错了,希望各位指点!