子陣列最大乘積

2021-07-03 22:51:56 字數 572 閱讀 8065

給定乙個double型別的陣列arr,其中的元素可正可負可0,返回子陣列累乘的最大乘積。例如arr=[-2.5,4,0,3,0.5,8,-1],子陣列[3,0.5,8]累乘可以獲得最大的乘積12,所以返回12。

解析:此題可以運用動態規劃解決

設f[i]表示以i為結尾的最大值,g[i]表示以i結尾的最小值,那麼

f[i+1] = max ,只有這三種情況。

考慮到f[i],g[i]只和i-1有關,那麼可以用區域性變數即可搞定,而不用使用陣列。

c++風格**:

class solution   

return rtn;

} };

或者另一種c**:

// 子陣列的最大乘積

int maxproduct(int *a, int n)

else if (a[i] == 0)

else // a[i] < 0

r = max(r, maxproduct);

}return r;

}

最大乘積子陣列

程式設計之美 上有一道關於在長度為n的陣列中找到n 1個元素乘積最大的題目,不過這並不是本文要討論的。本文討論的是另一種情況,給定乙個長度為n的浮點陣列,找乙個長度任意的子陣列 子陣列的元素在原陣列中是連續存放的 這個子陣列的乘積最大。通常,找乙個滿足指定條件子陣列都會使用動態規劃。遞迴縮小問題規模...

子陣列最大乘積

給定乙個double型別的陣列arr,其中的元素可正可負可0,返回子陣列累乘的最大乘積。例如arr 2.5,4,0,3,0.5,8,1 子陣列 3,0.5,8 累乘可以獲得最大的乘積12,所以返回12。分析 設f i 表示以i為結尾的最大值,g i 表示以i結尾的最小值,那麼 f i 1 的最大值與...

最大乘積子陣列

問題 given an integer arraynums,find the contiguous subarray within an array containing at least one number which has the largest product.思路 看了這篇文章後突然明白...