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

2021-06-28 06:52:26 字數 733 閱讀 9467

演算法提高 最大乘積  

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

問題描述

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

輸入格式

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

每組輸入資料共2行:

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

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

輸出格式

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

樣例輸入

15 51 2 3 4 5

樣例輸出

120

解題思路

將輸入的資料存入陣列然後做公升序排列。然後開始從末端迴圈,每次迴圈都求出順序前兩個數字的積和逆序前兩個數字的積,然後進行比較。

如果順序前兩個的積大於逆序前兩個的積,則sum*順序第乙個數字,m--;                                      如果順序前兩個的積小於或者等於逆序前兩個的積(此時要滿足m大於等於2),則sum*逆序後兩個的積,m-=2。

c**

#include#includeusing namespace std;

int a[20];

int main()

else

}printf("%lld\n",sum);

} return 0;

}

演算法基礎 藍橋杯入門演算法

1.動態陣列 vectora push back pop.back size clear 可能存在空間 問題,用 vector swap v 來解決。2.集合 set v.insert erase cout 比較方式 bool operator const people rhs const 迭代器 ...

藍橋杯 演算法訓練 Lift and Throw

演算法訓練 lift and throw 時間限制 3.0s 記憶體限制 256.0mb 問題描述 給定一條標有整點 1,2,3,的射線.定義兩個點之間的距離為其下標之差的絕對值.laharl,etna,flonne一開始在這條射線上不同的三個點,他們希望其中某個人能夠到達下標最大的點.每個角色只能...

藍橋杯 演算法訓練 數列

題目 演算法訓練 數列 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給定乙個正整數k 3 k 15 把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k 3時,這個序列是 1,3,4,9,10,12,13,該序列實際上就是 3 0,31,3 0 31,3 2,...