gpt4 book ai didi

c - 从数组中查找最长的算术级数

转载 作者:行者123 更新时间:2023-11-30 21:12:37 25 4
gpt4 key购买 nike

我有一个数字数组,例如[5,1,2,4,6,8,12],我想找到序列中最长算术级数的长度并打印它。最长的算术级数意味着具有公差的递增序列,在本例中为 [2,4,6,8]。

#include <stdio.h>

void main()
{
int array[100], i, num,diff;
printf("Enter the size of an array \n");

scanf("%d", &num);

printf("Enter the elements of the array \n");

for (i = 0; i < num; i++) {
scanf("%d", &array[i]);
}

printf("\n Numbers in a.p: ");

for (i = 0; i < num; i++) {
diff = array[i+1]-array[i];
if (array[i]-diff == array[i+1]-diff);
{
printf("%d, ", array[i]);
}
}
printf("\n Common difference:%d", diff);
}

最佳答案

像这样

#include <stdio.h>

int main(void){
#if DEBUG
int array[] = {5,1,2,4,6,8,12};
int num = sizeof(array)/sizeof(*array);
int i, diff;
#else
int array[100], i, num,diff;
printf("Enter the size of an array \n");

scanf("%d", &num);

printf("Enter the elements of the array \n");

for (i = 0; i < num; i++) {
scanf("%d", &array[i]);
}
#endif
int j, len, longest_len = 2, longest_i = 0;

for (i = 0; i < num - longest_len; i += len-1) {
diff = array[i+1]-array[i];
for(j = i+2; j < num && array[j-1]+diff == array[j]; ++j);
len = j - i;
if(longest_len < len){
longest_len = len;
longest_i = i;
}
}
printf("\n Numbers in a.p: ");
diff = array[longest_i+1] - array[longest_i];
printf("[ ");
for(i = 0; i < longest_len; ++i){
printf("%d", array[longest_i + i]);
if(i == longest_len-1)
printf(" ]\n");
else
printf(", ");
}
printf("\n Common difference:%d", diff);
}

关于c - 从数组中查找最长的算术级数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44381848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com