作业帮 > 综合 > 作业

寒假的时候,ACBOY要去拜访很多朋友,恰巧他所有朋友的家都处在坐标平面的X轴上.ACBOY可以任意选择一个朋友的家开始

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/29 14:35:37
寒假的时候,ACBOY要去拜访很多朋友,恰巧他所有朋友的家都处在坐标平面的X轴上.ACBOY可以任意选择一个朋友的家开始访问,但是每次访问后他都必须回到出发点,然后才能去访问下一个朋友.
比如有4个朋友,对应的X轴坐标分别为1,2,3,4.当ACBOY选择坐标为2的点做为出发点时,则他最终需要的时间为 |1-2|+|2-2|+|3-2|+|4-2| = 4.
现在给出N个朋友的坐标,那么ACBOY应该怎么走才会花费时间最少呢?
Input
输入首先是一个正整数M,表示M个测试实例.每个实例的输入有2行,首先是一个正整数N(N
#include
#include
#include
using namespace std;
int main()
{
int m;
cin >> m;
while (m--)
{
int n;
cin >> n;
int* p = new int[n];
int i;
for (i = 0; i < n; ++i)
{
cin >> p[i];
}
sort(p, p+n);
int sum = 0;
int t = n%2? n/2:n/2-1;
for (i = 0; i < n; ++i)
{
sum += abs(p[i] - p[t]);
}
cout
再问: 如果N为奇数的时候 那不是应该以a[(N/2)+1]为起点么?
再答: 假如 n为3的话 你n/2+1 就等于2了 数组元素从零开始a[2] 就为最后一个元素了、、
再问: 我的数组是从a[1]开始的呀。。
再答: 楼主 我对自己当下标从一开始用 n/2 + 1 做也对, #include #include #include using namespace std; int main() { int m; cin >> m; while (m--) { int n; cin >> n; int* p = new int[n+1]; int i; for (i = 1; i > p[i]; } sort(p+1, p+n+1); int sum = 0; int t = n/2+1; for (i = 1; i