You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
/*This C Program finds the sum of contiguous subarray within a 1 – D array of numbers which has the largest sum.*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* C Program to Find the Sum of Contiguous Subarray within a 1 - D Array of Numbers which has the Largest Sum
|
|
|
|
|
*/
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
|
|
int maxSubArraySum(int a[], int size, int *begin, int *end)
|
|
|
|
|
{
|
|
|
|
|
int max_so_far = 0, max_end = 0;
|
|
|
|
|
int i, current_index = 0;
|
|
|
|
|
for (i = 0; i < size; i++)
|
|
|
|
|
{
|
|
|
|
|
max_end = max_end + a[i];
|
|
|
|
|
if (max_end <= 0)
|
|
|
|
|
{
|
|
|
|
|
max_end = 0;
|
|
|
|
|
current_index = i + 1;
|
|
|
|
|
}
|
|
|
|
|
else if (max_so_far < max_end)
|
|
|
|
|
{
|
|
|
|
|
max_so_far = max_end;
|
|
|
|
|
*begin = current_index;
|
|
|
|
|
*end = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return max_so_far;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
int arr[] = {10, -2, 15, 9, -8, 12, 20, -5};
|
|
|
|
|
int start = 0, end = 0;
|
|
|
|
|
int size = sizeof(arr) / sizeof(arr[0]);
|
|
|
|
|
printf(" The max sum is %d", maxSubArraySum(arr, size, &start, &end));
|
|
|
|
|
printf(" The begin and End are %d & %d", start, end);
|
|
|
|
|
getchar();
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
The max sum is 56 The begin and End are 0 & 6
|