藍橋杯 ADV 15 最大乘積

2021-08-17 04:43:44 字數 840 閱讀 5328

演算法提高 最大乘積  

時間限制:1.0s   記憶體限制:512.0mb

問題描述

對於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

分析:開始的時候非常天真的想用dfs求全排列然後驗證所有可能中最大的,然後就超時了……後來發現其實給陣列排一下序,取絕對值最大的數乘起來就好了。不過牽扯到乙個負數的問題。兩個負數的積是正數,所以對負數兩個兩個取,和最大的兩個正數的積比較一下,如果負數的積更大就取負數的積,否則就取乙個最大正數就好了。

*順便吐槽一下自己的審題能力,改了半天都過不去,後來發現題目要求是分別求每組的最大乘積,我一直當所有乘積的最大值求的……

**:

#include#include#define maxlen 15

using namespace std;

bool camp(int a, int b)

int main()

; cin >> num;

for(int i = 0; i < num; i++)

else

}cout << ans << endl;

} return 0;

}

藍橋杯 ADV 15演算法提高 最大乘積

問題描述 對於n個數,從中取出m個數,如何取使得這m個數的乘積最大呢?輸入格式 第一行乙個數表示資料組數 每組輸入資料共2行 第1行給出總共的數字的個數n和要取的數的個數m,1 n m 15,第2行依次給出這n個數,其中每個數字的範圍滿足 a i 的絕對值小於等於4。輸出格式 每組資料輸出1行,為最...

藍橋杯 ADV 15 演算法提高 最大乘積

演算法提高 最大乘積 時間限制 1.0s 記憶體限制 512.0mb 問題描述 對於n個數,從中取出m個數,如何取使得這m個數的乘積最大呢?輸入格式 第一行乙個數表示資料組數 每組輸入資料共2行 第1行給出總共的數字的個數n和要取的數的個數m,1 n m 15,第2行依次給出這n個數,其中每個數字的...

藍橋杯 最大乘積

演算法提高 最大乘積 時間限制 1.0s 記憶體限制 512.0mb 問題描述 對於n個數,從中取出m個數,如何取使得這m個數的乘積最大呢?輸入格式 第一行乙個數表示資料組數 每組輸入資料共2行 第1行給出總共的數字的個數n和要取的數的個數m,1 n m 15,第2行依次給出這n個數,其中每個數字的...