我正在學習C,我的老師給了我一個任務,但我被卡住了。 陣列中有10個正數,我需要找到3個連續數字,並且總數最高。我在網上找到了這個解決方案,但我如何找到3個連續的數字並將它們相加?我應該如何處理這個問題?我應該在陣列中尋找最大的數字並從那裏出發? 我發現的代碼做了迄今爲止我所做的更好的工作。C從數組中連續輸出3個數字的最大總和
陣列具有:{1,2,3,2,0,5,1,6,0,1},那麼3個數字的最大總和將是{1,2,3,2,0,5,1,6,0,1},因爲它給12
#define N_ELEMENTS 10
int main(int argc, const char * argv[]) {
int a[N_ELEMENTS] = {1, 2, 3, 2, 0, 5, 1, 6, 0, 1};
int i = 0;
while(a[i] < 0 && i<N_ELEMENTS) {
i++;
}
if (a[i] < 0) {
printf ("DEBUG: array with only negative numbers. Print the smallest negative number as the sum and we are done.\n");
}
int sum_p=0, sum_n = 0;
int largest_sum = 0;
while (i<N_ELEMENTS) {
if (a[i] > 0) {
sum_p += a[i];
}
else {
sum_n += a[i];
}
if (sum_p+sum_n > largest_sum) {
largest_sum = sum_p + sum_n;
}
if (sum_p+sum_n <= 0) {
// find the next positive number
while(a[i] < 0 && i<N_ELEMENTS) {
i++;
}
if (a[i] < 0 || i == N_ELEMENTS) {
break;
}
sum_p = 0;
sum_n = 0;
} else {
i++;
}
}
printf ("DEBUG: The largest consecutive sum = %d\n", largest_sum);
}
我不明白wouldnt最大的總和是5,1,6?由於12> 8 – JackVanier
呃,是的,對不起我的壞! – MeChris
所有你需要的是滾動的總和。 –