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; }
Filed under: ICPC Tools




