Maxiumum subsequence problem
Problem:
Given (possibly negative) integers A1,A2,...An, find the maxiumum value of the sub array.
Solution:
#include <stdio.h>
#define SIZEOF(arr) (sizeof(arr)/sizeof(arr[0]))
int arr[] = { 2, -3, 4, -1, 5, -1, -3, 6, -1, -1, -4, 2, -1};
void MaxSum(int arr[],int length)
{
int max,sum;
int i = 0 ;
max = sum = arr[0];
for(i=1;i<length;i++)
{
sum += arr[i];
if(sum > max)
{
max = sum;
}
if(sum < 0)
{
sum = 0;
}
}
printf("The max sum is : %d\n",max);
}
void PrintArray(int arr[],int size)
{
int i;
for(i=0;i<size;i++)
printf("%d ",arr[i]);
printf("\n");
}
int main()
{
PrintArray(arr,SIZEOF(arr));
MaxSum(arr,SIZEOF(arr));
return 0;
}