/**
* 实数序列, 求最大乘积子序列
*
*/
public class MaxBy {
public static double find(double[] a){
assert(true);
double max = 1;
double min = 1;
double finalMax = a[0];
for(int i=0; i<a.length; i++){
if(a[i] == 0){
max = 1;
min = 1;
if(finalMax < 0){
finalMax = 0;
}
}else{
double mmax = max * a[i];
double mmin = min * a[i];
max = mmax > mmin ? mmax : mmin;
min = mmax > mmin ? mmin : mmax;
if(max < a[i]){
max = a[i];
}
if(min > a[i]){
min = a[i];
}
if(max > finalMax){
finalMax= max;
}
}
}
return finalMax;
}
/**
* @param args
*/
public static void main(String[] args) {
double[] a = { -2.5,4,0,3,0.5,8,-1};
double res = MaxBy.find(a);
System.out.println(res);
}
}
最长乘积子序列
最新推荐文章于 2020-09-13 13:36:44 发布