【发布时间】:2016-06-24 05:10:09
【问题描述】:
如何在大小为 n 的正整数数组中找到最大的对和,但整数至少在距离 k 处? (例如,如果第一个元素是 a[i],那么第二个元素应该是 a[i+k](或更多)。)
我试过这个:
int max_sum = 0;
int sum;
for (int i = 0 ; i < n; i++) {
for( int j = i + k; j < n; j++) {
sum = arr_sums[i] + arr_sums[j];
if ( sum > max_sum ) {
max_sum = sum;
}
}
}
但是对于大型数组来说太慢了。
【问题讨论】:
-
数组排序了吗?
-
int max_sum;-->int max_sum = INT_MIN;因为你使用了一个未初始化的变量。 -
@Mitsos101 边缘案例警报!在一组数字中,两个数字的最大和可能为负数。
-
@Oka 又是我的错,整数总是正数。
-
那他们为什么不是
unsigned?
标签: c arrays algorithm performance