让我们说用户输入是7 10 12 14 16 20 25.我希望输出是一组按升序排列的数字,它们的差别是完全相同的。所以对于这种情况,它将是:12,25,7,20或10,14,16,20。注意在两种情况下它们的差异是相同的,并且输出中至少有4个数字。我该怎么做?
我试图找出数组中整数之间是否存在共同点。我首先想到的是按升序对它们进行排序会更好,然后如果sorted_array[1] - sorted_array[0] = sorted_array[2] - sorted_array[1]
则会有一个共同的区别。但是如果数字是例如4 5 12 13 16 20 27 28
,那么它就不起作用,[12,5], [20,13], [27,20]
int r = 0;
int l = 0;
while (r < n) {
if (arr_days4[r] - arr_days4[l] == arr_days4[r+1] - arr_days4[l+1]) {
sequence_difference++;
r++;
i++;
}
else if(arr_days4[i] - arr_days4[r] > arr_days4[r + 1] - arr_days4[l+1]){
l++;
}
else{
r++;
}
printf("\n%d", sequence_difference);
}
当我尝试打印sequence_difference时,它给了我32767 ...任何人都可以帮忙吗?
答案 0 :(得分:1)
首先,您应该清除要求或指定所需的输入和输出。 但看到你的代码有很多错误,我可以弄清楚
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (array[i] > array[j]) {
a = array[i];
array[i] = array[j];
array[j] = a;
}
}
}
内循环必须迭代n-1次,因为在最后一次传球时如果你不这样做,我将超过n。 下一个错误是在你的while循环中你使用了i,它具有值n,因为循环的上限。 所以试着看看这些错误。 了解更多信息can check