double fun(double *a,int n)
{
double maxend=a[0],minend=a[0];
double end1,end2;
double maxresult=a[0];
for (int i=1;i<n;++i)
{
//maxend存放离当前点最近的几个连续数的最大乘积
//minend存放离当前点最近的几个连续数的最小乘积
//因为当前的数可能是负数,所以最小乘积需要保存
end1=maxend*a[i];
end2=minend*a[i];
//要与a[i]比较,因为有可能前面已保存的maxend和minend是介于-1到1的小数
maxend=max(max(end1,end2),a[i]);
minend=min(min(end1,end2),a[i]);
maxresult=max(maxresult,maxend);
}
return maxresult;
}
求数组中乘积最大的子串
最新推荐文章于 2022-03-22 22:06:18 发布