w3resource

C Exercises: Find maximum product subarray in a given array

C Array: Exercise-61 with Solution

Write a program in C to find the maximum product subarray in a given array.

Sample Solution:

C Code:

#include <stdio.h>
int min(int p, int q) 
{
    return (p < q) ? p : q;
}
int max(int p, int q) 
{
    return (p > q) ? p : q;
}
int maxProduct(int arr1 [], int n)
{
    int maxend = 0, minend = 0;
    int maxupto = 0;
    for (int i = 0; i < n; i++)
    {
        int temp = maxend;
        maxend = max(arr1[i], max(arr1[i] * maxend, arr1[i] * minend));
        minend = min(arr1[i], min(arr1[i] * temp, arr1[i] * minend));
        maxupto = max(maxupto, maxend);
    }
    return maxupto;
}
int main(void)
{
    int arr1[] = { -4, 9, -7, 0, -15, 6, 2, -3 };
    int n = sizeof(arr1) / sizeof(arr1[0]);
    int i;
    //------------- print original array ------------------	
	printf("The given array is :  ");
	for(i = 0; i < n; i++)
	{
	printf("%d  ", arr1[i]);
    } 
	printf("\n");
//------------------------------------------------------ 	
    printf("The maximum product of a sub-array in the given array is:  %d", maxProduct(arr1, n));
    return 0;
}

Sample Output:

The given array is :  -4  9  -7  0  -15  6  2  -3  
The maximum product of a sub-array in the given array is:  540

Flowchart:

Find maximum product subarray in a given array

C Programming Code Editor:

Improve this sample solution and post your code through Disqus.

Previous: Write a program in C to find the row with maximum number of 1s.
Next: Write a program in C to find the largest subarray with equal number of 0s and 1s.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.

C Programming: Tips of the Day

C Programming - What is the argument for printf that formats a long?

Put an l (lowercased letter L) directly before the specifier.

unsigned long n;
long m;

printf("%lu %ld", n, m);

Ref : https://bit.ly/3dIwfkP