本文共 591 字,大约阅读时间需要 1 分钟。
网上看到的题目,个人认为准确翻译应当是最大子数组乘积,而不是最大子序列乘积。
下面这个链接上有非常好的介绍。
值得注意的是maxneg初始化为0,而不是别的负数,这样才不会影响maxval的判断。
#includeusing namespace std;float maxsubseqproduct(float arr[], int len){ float maxval = 0, maxpos = 1, maxneg = 0; for(int i = 0; i < len; ++i) { if(arr[i] > 0) { maxpos *= arr[i]; maxneg *= arr[i]; } else if(arr[i] < 0) { float tmp = maxneg; maxneg = maxpos * arr[i]; maxpos = tmp * arr[i]; } else//arr[i] == 0 { maxpos = 1; maxneg = 0; } if(maxpos < 1) maxpos = 1; if(maxpos > maxval) maxval = maxpos; } return maxval;}int main(){ cout<<"hello world."<
转载地址:http://bxxli.baihongyu.com/