假设用户输入是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…有人能帮忙吗?
首先,您应该清除需求或指定所提供的输入和所需的输出。但是看到你的代码有很多错误,我可以找出
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。所以试着看看这些错误。有关更多信息,您可以查看