/* Include lib */
#include <stdio.h>
#include <string.h>

/* Define */
#define ARRAY_MAX       9
#define ARRAY_INPUT     { -2, 1, -3, 4, -1, 2, 1, -5, 4 }

int array_input[ARRAY_MAX] = ARRAY_INPUT;

/* API */
/* API sum of array input */
int sum_array(int *arr, int size, int *sum)
{
    int i;
    
    if (!arr || !sum) {
        printf("NULL input !!\n");
        return -1;
    }
    
    if (size == 0) {
        printf("Empty size !!\n");
        return -1;
    }
    
    *sum = 0;
    for (i = 0; i < size; i++)
        *sum = *sum + arr[i];

//    printf("\n\nSub array: ");
//    for (i = 0; i < size; i++) {
//        printf("%d ", arr[i]);
//    }
//    printf("\n");
//    printf("Sum = %d\n", *sum);
    
    return 0;
}

/* Main func interract with user */
int main()
{
    int prev_arr[ARRAY_MAX] = { 0 };
    int i, j, ret, last = ARRAY_MAX - 1;
    int curr_sum, prev_sum, prev_size;
    
    /* Print array input */
    printf("Input array: ");
    for (i = 0; i < ARRAY_MAX; i++) {
        printf("%d ", array_input[i]);
    }
    printf("\n");
    
    /* Loop with each size for sub-array: 1 -> 2 -> 3 -> ... -> ARRAY_MAX */
    prev_sum = 0;
    prev_size = 0;
    for (i = 1; i <= ARRAY_MAX; i++) {
        /* With each size, loop to find combination of contiguous elements. Then sum */
        for (j = 0; j <= (last - (i - 1)); j++) {
            ret = sum_array(&array_input[j], i, &curr_sum);

            /* Compare sum with previous sum. Store bigger result and that sub-array to backup */
            if (ret == 0) {
                if (prev_size == 0 || curr_sum > prev_sum) {    /* First times or find bigger sum */
                    prev_sum = curr_sum;
                    memset(&prev_arr[0], 0, sizeof(int) * ARRAY_MAX);
                    memcpy(&prev_arr[0], &array_input[j], sizeof(int) * i);
                    prev_size = i;
                }
            }
        }
    }
    
    /* Print final biggest result and that according subarray */
    printf("Sub array: ");
    for (i = 0; i < prev_size; i++) {
        printf("%d ", prev_arr[i]);
    }
    printf("\n");
    printf("Sum = %d\n", prev_sum);
    
    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: