【发布时间】:2016-04-05 10:05:41
【问题描述】:
如果数组的和为 15,我如何找到中间元素的总和或检查条件?
例如,数组 {3, 2, 10, 4, 1, 6, 9} 以 15 为中心,因为序列 10, 4, 1 sums 到 15 并且序列位于前面由两个元素(3、2)和后跟两个元素(6、9)。
所以返回1,因为序列10, 4, 1 总和为15,并且前面有两个元素,后面有两个元素。请注意,还有另一个序列总和为15(6,9)。数组可以有多个序列的总和为15,只要其中至少一个居中即可。
同样,对于数组 {2, 10, 4, 1, 6, 9},返回 0,因为 (10, 4, 1) 前面有一个元素,后面有两个。 (9, 6) 前面有五个元素,但后面没有。因此,两者都不是居中的。
int isCentered5(int a[ ], int len) {
int sum=0;
for(int i=0;i<len;i++){
sum+=a[i];
}
//check if sum less than 15
if(sum<15){
printf("Sum of all elements are less than 15");
}
//check if even terms- we need odd terms to find middle sum
elseif(len%2==0){
printf("There should be odd lenght of array to find middle sum");
}
else{
//check if middle sum of array is 15?
//can you help me here,how can i check is middle term sum is 15 or not
for(int i=0;i<len;i++){
}
}
}
int isCentered5(int a[ ], int len);//function declaration
int main() {
}
【问题讨论】:
-
您对 centered-15 的定义很罗嗦,但不是很清楚。总和必须由三个元素组成吗? (如果不是,检查奇数个元素就没有意义了。)或者只要左边的元素数量与左边的元素数量一样多,中心的任何数量的元素总和为 15 就足够了正确的?元素和等于 15 的数组是中心 15 的特例吗?