好的,所以要清楚我正在计算距离。如果数字是偶数,那么它很容易计算,但是如果它很奇怪,我有一个想法,但我无法应用它。任务听起来像这样:我需要找到物体之间的距离。例如给定数据:
4 // how many objects (n)
4 10 0 12 every object's distance
After sorting the numbers ( im using arrays ) the answer is: (4-0)+(12-10)=6;
所以我的代码在排序偶数后似乎是正确的,但是当数字是奇数计算时是这样的:
5 (n)
4 10 0 12 2
Answer= (2-0)+(4-2)+(12-10)=6;
所有我需要做的(我认为)是当有一半奇数并执行某个功能时停止功能;这是我的代码:
if(n%2!=0){
for(i=0;i<n;i++){
if(i==((n/2)+1)){ // THIS PART
length+=mas[(n/2)+1]-mas[n/2];
i++;
break;
}
length+=mas[i+1]-mas[i];
i++;
}
}
答案 0 :(得分:0)
#include <stdio.h>
int sum_distance(int n, int a[n]){
if(n < 2)
return 0;
int sum = 0;
int i=0;
if(n & 1){//n is odd
sum = a[1] - a[0];
++i;
}
for(;i<n; i+=2){
sum += a[i+1] - a[i];
}
return sum;
}
int main(){
int a[4] = { 0, 4, 10, 12};
int b[5] = { 0, 2, 4, 10, 12};//they are sorted
printf("%d\n", sum_distance(4, a));//6
printf("%d\n", sum_distance(5, b));//6
return 0;
}