Find the maximum product of three numbers in an array?
Eg. 9,5,1,2,3
Max product= 9*5*3= 135
The array can hav negative numbers also..

Answers were Sorted based on User's Feedback



Find the maximum product of three numbers in an array? Eg. 9,5,1,2,3 Max product= 9*5*3= 135 The..

Answer / utkarsh

/*The maximum value of the product fr a set of 3 numbers positiv or negative can be
->either the product of 2 negative numbers( the ones with highest absolut values) and 1(biggest) positive number
->or product of three biggest positive numbers
->zero if all other numbers (except that 0) ar negativ
-> product of smallest 3 negativ number if all numbers are negative
>>>
<you can try it for ANY POSSIBLE VALUES..in th array and see..>
<<<<
*/

procedure
I)
so first IF ARRAY HAS LESS THAN 3 ELEMENTS THROW ERROR
else
sort the numbers in 2 arrays..
neg[]-> with negativ values in descending order
pos[]-> with positive values in descending order
->if there is a zero set a boolean value of a variabl ISZERO as TRUE

II) IF (neg[] has zero or only 1 element) THEN

/* product of the three highest values in pos[] (ie the first three values) is the answer*/

RETURN (pos[0]*pos[1]*pos[2]);

III) ELSE IF pos[] is empty
/*(meaning there are only negative values..multiply the smallest three negative numbers (ie say -1,-2,-3,-4,-5 means multiply -1,-2,-3 you get -6)..that is the answer */


if pos[] is NULL AND if there is a zero then
RETURN ZERO;
else //if pos[] is null and no element is zero then
RETURN neg[neg.length-1]*neg[neg.length-2]*neg[neg.length-3]

/*
//NOTE:

there are only negative values and zeros
highest value is 0
check that too from ISZERO variabl..
*/

IV)ONLY if neg[] array has more than 1 value THEN
multiply th biggest 2 negativ absolute numbers


/*
//(eg {-9,-7,-6,-5 } means...tak -9 and -7..so product is 63)

V) multiply th above result with th highest postiv value from positive array...(ie pos[])

VI) compare this value got in STEP FIVE with product of the three highest values in pos[](ie product of first three values) which ever is greate is the answer
ie
*/

IF (neg[0]*neg[1]*pos[0])>(pos[0]*pos[1]*pos[2]) THEN
RETURN (neg[0]*neg[1]*pos[0])
ELSE RETURN (pos[0]*pos[1]*pos[2])


IT IS VERY EASY TO CODE THIS BECAUSE THE STEPS ARE ALMOST IN PSUEDOCODE....hope it helps...

Is This Answer Correct ?    4 Yes 0 No

Find the maximum product of three numbers in an array? Eg. 9,5,1,2,3 Max product= 9*5*3= 135 The..

Answer / sathish

Just count the number of -ve symbols in the array before sorting.

CODE:
void main()
{
clrscr();
int i,j,count=0,a[5]={10,2,-7,-5,3};
for(i=0;i<5;i++)
if(a[i]<0)
count=count+1;
if((count%2)==0)
{
for(i=0;i<5;i++)
{

if(a[i]<0)
a[i]=-a[i];
}
}
for(i=0;i<5;i++)
{
for(j=i;j<5;j++)
{
if(a[i]<a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
int mul=1;
for(i=0;i<3;i++)
{
mul=mul*a[i];
}
cout<<mul;
getch();
}

Is This Answer Correct ?    9 Yes 8 No

Find the maximum product of three numbers in an array? Eg. 9,5,1,2,3 Max product= 9*5*3= 135 The..

Answer / srikanthgowda

#include<iostream>
#include<stdlib.h>
using namespace std;

int main()
{
int i,j,a[100];
cout<<"Enter the size of array"<<endl;
int n;
cin>>n;


if(n==0)
{
cout<<"invaild!!"<<endl;
exit(1);
}

cout<<"Enter the element for array"<<endl;
for ( i=0;i<n;i++)
cin>>a[i];


int lr=0;
if(n==1)
{
cout<<"only one array is present!!"<<a[0]<<endl;
exit(0);
}
else if(n==2)
{
if(a[0]<a[1])
{
cout<<a[1]<<"largest number";
exit(0);
}

else
{
cout<<a[0]<<"largestn number";
exit(0);
}
}
else if(n==3)
{
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]*a[j]>lr)
{
lr=a[i]*a[j];

}
}
}

cout<<"max product="<<lr<<endl;
}



else
{
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
for(int k=j+1;k<n;k++)
{
if(a[i]*a[j]*a[k]>lr)
{
lr=a[i]*a[j]*a[k];

}
}
}
}

cout<<"max product="<<lr<<endl;
}
return 0 ;
}


/* Ouput

1.

Enter the size of array
5
Enter the element for array
9
5
1
2
3
max product=135

2.

srikanth@srikanth-System-Product-Name:~/c++$ ./a.out
Enter the size of array
5
Enter the element for array
-5
3
1
2
4
max product=24
srikanth@srikanth-System-Product-Name:~/c++$

*/

Is This Answer Correct ?    1 Yes 0 No

Find the maximum product of three numbers in an array? Eg. 9,5,1,2,3 Max product= 9*5*3= 135 The..

Answer / utkarsh

IF ARRAY HAS LESS THAN 3 ELEMENTS
{
THROW ERROR
}

ELSE
{
sort the numbers in 2 arrays..
neg[]-> with negativ values in descending order
pos[]-> with positive values in descending order
->if there is a zero THEN
set a boolean value of a variabl ISZERO as TRUE
}


IF pos[] is empty
{
IF ISZERO==true THEN
// if there are only negativ values and a zero
RETURN ZERO;

ELSE
// all elements are -ve and no element is zero then
RETURN (neg[neg.length-1]*neg[neg.length-2]*neg[neg.length-3]);

}

IF (neg[] has zero or only 1 element) THEN
{
RETURN (pos[0]*pos[1]*pos[2]);
}
ELSE IF neg[] array has more than 1 value THEN
{
IF (neg[0]*neg[1]*pos[0]) > (pos[0]*pos[1]*pos[2]) THEN
RETURN (neg[0]*neg[1]*pos[0]);
ELSE
RETURN (pos[0]*pos[1]*pos[2]);

}


FOR DETAILS ABT LOGIC READ ABOVE POST

Is This Answer Correct ?    1 Yes 1 No

Find the maximum product of three numbers in an array? Eg. 9,5,1,2,3 Max product= 9*5*3= 135 The..

Answer / jack

#include"stdafx.h"
#include<iostream>


using namespace std;
void sort(int[],int );
int maxproduct(int ar[],int n);
int main()
{
int arr[]={2,7,9,5,3,6,-12};

cout<<maxproduct(arr,7);
system("calc");


system("pause");
return 0;
}
void sort(int array1[],int n)
{
for(int i=1;i<n;i++)
for(int r=0;r<n-1;r++)

if(array1[r]>array1[r+1])
{
int temp=array1[r];
array1[r]=array1[r+1];
array1[r+1]=temp;
}

}
int maxproduct(int ar[],int n)
{
sort(ar,n);
int max=1;
for(int i=n-1;i>=n-3;i--)
max*=ar[i];
return max;
}

Is This Answer Correct ?    1 Yes 1 No

Find the maximum product of three numbers in an array? Eg. 9,5,1,2,3 Max product= 9*5*3= 135 The..

Answer / bharghavi

consider the array: 10,2,-7,-5,3
Descending order: 10,3,2,-5,-7
Then ur result will give: 10*3*2=60
But the max. product can be: 10*(-5)*(-7) =350

Is This Answer Correct ?    4 Yes 8 No

Find the maximum product of three numbers in an array? Eg. 9,5,1,2,3 Max product= 9*5*3= 135 The..

Answer / sathish

1)Sort the array in descending order.
2)Multiply for required number of indices.

CODE:

int mul=1;
for(i=0;i<3;i++)
{
mul=mul*a[i];
}
cout<<mul;

Is This Answer Correct ?    11 Yes 16 No

Post New Answer

More C++ Code Interview Questions

Write a C++ program without using any loop (if, for, while etc) to print prime numbers from 1 to 100 and 100 to 1 (Do not use 200 print statements!!!)

0 Answers   iGate,


Perform the functionality of 2-D array through 1-D array and in it the functions to be performed were: (1) Display the array in 2-D format (2) Display a particular element (3) Display a particular row (4) Display a particular column

1 Answers   Nagarro,


write a program that can LOCATE and INSERT elements in array using c++ programming languages.

0 Answers  


What output does the following code generate? Why? What output does it generate if you make A::Foo() a pure virtual function? class A { A() { this->Foo(); } virtual void Foo() { cout << "A::Foo()" << endl; } }; class B : public A { B() { this->Foo(); } virtual void Foo() { cout << "A::Foo()" << endl; } }; int main(int, char**) { A objectA; B objectB; return 0; }

0 Answers  


What will be the output- for(i=1;i<=3;i++) { printf("%d",i); continue; i++; }

5 Answers   Impetus,






i really need help about this.. write a program to display the set of odd and even numbers separately. find the highest and lowest value of the given numbers.

0 Answers  


How to Split Strings with Regex in Managed C++ Applications?

0 Answers   Microsoft,


Complexity T(n) Write a linear-time algorithm that sorts n distinct integers, each of which is between 1 and 500. Hint: Use a 500-element array. (Linear-time means your algorithm runs in time c*n + b, where c and b are any constants that do not depend on n. For example, your algorithm can run in time n, or time 2n + 1, or time 5n + 10, or time 100n + 6, but not time c*n*n = c*n?.)

1 Answers   Qatar University,


Show by induction that 2n > n2, for all n > 4.

2 Answers   Karvy, Qatar University,


what is virtual constroctor ? give an exam for it?-(parimal dhimmar)

2 Answers  


How reader and writer problem was implemented and come up with effective solution for reader and writer problem in case we have n readers and 1 writer.

6 Answers   Microsoft, NetApp,


create a stucture student containing field for roll no,class,year and marks.create 10 student annd store them in a file

0 Answers   HCL,


Categories