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

2021-06-28 11:47:38 字數 735 閱讀 5596

演算法提高 最大乘積  

時間限制: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

看起來像是01揹包,,可是我用01揹包做起來,總是錯的。所以就借鑑了一下別人的思路。

先排序,後判斷最大的兩個數和最小的兩位數(如果有負數,負負得正)相乘哪個大,然後依次篩選。當兩個相等時,一定要選兩個負數,是為了下次可以選到最大,自己體會其中的意思吧。

#include #include int cmp(const void *a , const void *b)

int main()

qsort(num,n,sizeof(int),cmp) ;

for(int i = n-1 , j = 0 ; m>0;)

else

}else

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

} return 0 ;

}

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

問題描述 對於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行,為最...

藍橋杯練習系統演算法提高 最大乘積

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