最大乘積
問題描述
對於n個數,從中取出m個數,如何取使得這m個數的乘積最大呢?
輸入格式
第一行乙個數表示資料組數
每組輸入資料共2行:
第1行給出總共的數字的個數n和要取的數的個數m,1<=n<=m<=15,
第2行依次給出這n個數,其中每個數字的範圍滿足:a[i]的絕對值小於等於4。
輸出格式
每組資料輸出1行,為最大的乘積。
樣例輸入 1
5 51 2 3 4 2
樣例輸出 48
思路:將輸入的資料存入陣列然後做公升序排列。然後開始從末端迴圈,每次迴圈都求出正序前兩個數字的積和逆序前兩個數字的積,然後進行比較。
我們規定經sort排序後從左到右為正序,從右到左為逆序
如果逆序前兩個的積大於正序前兩個的積,則sum*逆序第乙個數字,m--;
如果逆序前兩個的積小於或者等於正序前兩個的積(此時要滿足m大於等於2,因為有可能是兩個負數),則sum*正序後兩個的積,m=m-2。
源**:
#include #include using namespace std;
int main()
else
}cout<
藍橋杯 演算法提高 最大乘積
演算法提高 最大乘積 時間限制 1.0s 記憶體限制 512.0mb 問題描述 對於n個數,從中取出m個數,如何取使得這m個數的乘積最大呢?輸入格式 第一行乙個數表示資料組數 每組輸入資料共2行 第1行給出總共的數字的個數n和要取的數的個數m,1 n m 15,第2行依次給出這n個數,其中每個數字的...
藍橋杯 演算法提高 最大乘積
問題描述 對於n個數,從中取出m個數,如何取使得這m個數的乘積最大呢?輸入格式 第一行乙個數表示資料組數 每組輸入資料共2行 第1行給出總共的數字的個數n和要取的數的個數m,1 n m 15,第2行依次給出這n個數,其中每個數字的範圍滿足 a i 的絕對值小於等於4。輸出格式 每組資料輸出1行,為最...
藍橋杯演算法提高 最大乘積
問題描述 對於n個數,從中取出m個數,如何取使得這m個數的乘積最大呢?輸入格式 第一行乙個數表示資料組數 每組輸入資料共2行 第1行給出總共的數字的個數n和要取的數的個數m,1 n m 15,第2行依次給出這n個數,其中每個數字的範圍滿足 a i 的絕對值小於等於4。輸出格式 每組資料輸出1行,為最...