-2.5 4 0 3 0.5 8-1ans: (3,0.5,8)
Template<typenamecomparable>
Comparable Maxprod (constvector<comparable>& v)
{
int i;
Comparable maxproduct = 1;
Comparable minproduct = 1;
Comparable maxcurrent = 1;
Comparable mincurrent = 1;
For (Inti=0;i<v.size (); i++)
{
Maxcurrent *= V[i];
Mincurrent *= V[i];
if (maxcurrent >maxproduct)
Maxproduct =maxcurrent;
if (mincurrent >maxproduct)
Maxproduct =mincurrent;
if (maxcurrent <minproduct)
Minproduct =maxcurrent;
if (mincurrent <minproduct)
Minproduce =mincurrent;
if (mincurrent >maxcurrent)
Swap (maxcurrent,mincurrent);
if (Maxcurrent < 1)
Maxcurrent = 1;
return maxproduct;
}
}
* Solve directly with dynamic programming
State transition equation: Max represents the largest contiguous substring ending with a
Max = max{a,max[i-1]*a,min[i-1]*a};
Min =min{a,max[i-1]*a,min[i-1]*a};
C + + code:
Double func (double* A, constint N)
{
double* MaxA = Newdouble[n];
double* MinA = Newdouble[n];
Msxa[0] = Min[a] = a[0];
Double value = maxa[0];
for (int i=1;i<n;i++)
{
Maxa[i] =max (Max (A[i],maxa[i-1]*a[i]), mina[i-1]*a[i]);
Mina[i] =min (, Min (A[i],maxa[i-1]*a[i]), mina[i-1]*a[i]);
Vlaue =max (Value,maxa[i]);
}
delete [] MaxA;
delete [] MinA;
return value;
}
28th Chapter: Maximal Continuous product sub-string