DataStructures- 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;
}

 

Leave a Reply