子陣列的最大乘積

2021-06-26 15:00:30 字數 572 閱讀 7246

問題描述:給定乙個長度為n的整數陣列,只允許用乘法,不能用除法,計算任意(n-1)個數的組合乘積中最大的一組,並寫出演算法的時間複雜度。

問題分析:先來分析陣列的正負情況

1、如果陣列中至少有兩個是0,那麼子陣列的最大乘積必為0

2、如果陣列中包含乙個0,分情況討論

(1)、如果陣列中有偶數個負數,那麼他的乘積為除了0以外n-1個數的乘積

(2)、如果陣列中有奇數個負數,那麼子陣列的最大乘積為0

3、如果陣列中沒有0,分情況討論

(1)、如果陣列中有偶數個負數,那麼除了最小正數以外的n-1個數的乘積為最大乘積

(2)、如果陣列中有奇數個負數,那麼除了絕對值最小的負數以外的n-1個數的乘積為最大乘積

最大乘積子陣列

程式設計之美 上有一道關於在長度為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結尾的最小值,那...

子陣列最大乘積

給定乙個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 的最大值與...