最大乘積(陣列)

2021-10-08 21:00:30 字數 712 閱讀 4868

最大乘積

描述對於n個數,從中取出m個數,如何取使得這m個數的乘積最大呢?

輸入第一行乙個數表示資料組數

每組輸入資料共2行:

第1行給出總共的數字的個數n和要取的數的個數m,1<=n<=m<=15,

第2行依次給出這n個數,其中每個數字的範圍滿足:a[i]的絕對值小於等於4。

輸出每組資料輸出1行,為最大的乘積。

輸入樣例 1

15 5

1 2 3 4 2

輸出樣例 1

48**

nj一開始沒有注意到題目中數字可以有負數,就想著直接排序取後面幾個較大數相乘。結果答案錯誤

錯誤**:

#include

using

namespace std;

intmain()

sort

(a,a+n)

;for

(i=n-m;i) cout<}return0;

}

正確答案

#include

using

namespace std;

intmain()

else}if

(m ==1)

cout<}return0;

}

最大乘積子陣列

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