Esempio n. 1
0
int maxSubArraySum(int arr[], int l, int h)
{

   if (l == h)
     return arr[l];
   int m = (l + h)/2;
   return max(maxSubArraySum(arr, l, m),
              maxSubArraySum(arr, m+1, h),
              maxCrossingSum(arr, l, m, h));
}
Esempio n. 2
0
int main()
{
        int a[] = {-2,-3,4,-1,-2,1,5,-3};
        int n = 8;
        printf("Max : %d\n",maxSubArraySum(a,n));
        return 0;
}
 int main()
{
   int a[] =  {-2, -3, 4, -1, -2, 1, 5, -3};
   int n = sizeof(a)/sizeof(a[0]);
   int max_sum = maxSubArraySum(a, n);
   printf("Maximum contiguous sum is %d\n", max_sum);
   return 0;
}/*Now try below question
Esempio n. 4
0
/* Driver program to test maxSubArraySum */
int main()
{
   int a[] =  {1,-1,1,1};
   int n = sizeof(a)/sizeof(a[0]);
   int max_sum = maxSubArraySum(a, n);
   printf("Maximum contiguous sum is %d\n", max_sum);
   return 0;
}
Esempio n. 5
0
int main()
{
   int arr[] = {2, 3, 4, 5, 7};
   int n = sizeof(arr)/sizeof(arr[0]);
   int max_sum = maxSubArraySum(arr, 0, n-1);
   printf("Maximum contiguous sum is %d\n", max_sum);
   getchar();
   return 0;
}
Esempio n. 6
0
int maxSubArraySum(int arr[], int low, int hi)
{
    //Base case: only 1 element
    if (low == hi)
        return arr[low];

    // Find mid point
    int mid = (low + hi ) >>1;

   // Return the max of the following three sums:
   // a) max subarray sum in the left half from mid
   // b) max subarray sum in the right half from mid
   // c) max subarray such that the subarray crosses midpoint

   return max(maxSubArraySum(arr, low, mid),\
              maxSubArraySum(arr, mid+1, hi),\
              maxCrossingSum(arr, low, mid, hi)
             );
}
Esempio n. 7
0
/*Driver program to test maxSubArraySum*/
int main()
{
   //int arr[] = {-2, -3, 4, -1};
   int arr[] = {13, 14, -6, -2, -3, -1, -5, -6};    
   int n = sizeof(arr)/sizeof(arr[0]);
   int max_sum = maxSubArraySum(arr, 0, n-1);

   printf("Maximum contiguous sum is %d\n", max_sum);

   return 0;
}
Esempio n. 8
0
int main()
{
    int dim;
    scanf("%d",&dim);
    int i ;
    int arr[dim];
    for(i=0;i<dim;i++)
        scanf("%d",&arr[i]);
    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);
    return 0;
}
Esempio n. 9
0
/* Driver program to test maxSubArraySum */
int main()
{
   long long arr[100003];
   long long b[100003];
   long long int sum=0;
   long long t;
   scanf("%lld",&t);
   while(t--)
   {
    long long n;
   	scanf("%lld",&n);
   	for( long long i=0;i<n;i++)
   	{
   		scanf("%lld",&arr[i]);
   		b[i]=-arr[i];
   		sum+=arr[i];
   }
   long long  max_sum = maxSubArraySum(b, n);
  if(max_sum<0)
   printf("%lld\n",(long long)(sum));
  else
   printf("%lld\n",(long long)(sum+(2*max_sum)));
   }
}