如何编写最大子序列乘积的正确算法

时间:2019-02-24 02:23:59

标签: algorithm dynamic-programming

给出一个数组A,尝试求解最大子序列 产品问题算法。因此,该函数应使用动态编程返回具有最大乘积子序列的开始和结束索引。例如:

funcSubSeqMaxProduct(A[1..n]) {

return j,k  #Where j<=k and A[j,...k]  is the maximum sub sequence product.

}

到目前为止,我尝试过的是:

funcSubSeqMaxProduct(A[1..n]) {
   for i = 1 to n
     pro(i) = max(ai, pro(i-1)*ai)
     j = max(pro(i))

    #something I am struggling how to get the correct indices of lower and upper bound.
    return j,k 

    }

1 个答案:

答案 0 :(得分:0)

如果所有值均为正值,则可以将其替换为对数,然后在对数数组中使用Kadane’s Algorithm搜索最大子数组总和。