最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

帶你粗略了解c++的最大乘積

 更新時間:2021年08月20日 15:30:20   作者:咸魚吖  
這篇文章主要為大家詳細介紹了C++的最大乘積,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助

今天給大家講最大乘積這道題目

最大乘積

內存限制:256 MiB

時間限制:1000 ms

輸入文件:maximum.in

輸出文件:maximum.out

題目類型:傳統(tǒng)

評測方式:文本比較  

題目描述

給你 n n n個整數 a 1 , a 2 , a 3 , a 4... a n a1,a2,a3,a4...an a1,a2,a3,a4...an 從中任意挑選出個數字,使得乘積最大,輸出乘積最大值。

輸入格式

輸入有多組測試數據。

第一行為整數 t t t,表示測試數據組數。

每組測試數據第一行為整數 n n n,表示數字的數量。

每組測試數據第二行有 n n n個整數 a 1 , a 2 , . . . . a n a1,a2,....an a1,a2,....an

輸出格式

每組測試數據輸出只有個整數,表示挑選出個數字的乘積最大值。

樣例

樣例輸入

4

5

-1 -2 -3 -4 -5

6

-1 -2 -3 1 2 -1

6

-1 0 0 0 -1 -1

6

-9 -7 -5 -3 -2 1

樣例輸出

-120

12

0

945

思路

這個題目其實不難。我們先分析一下這個題目。

這個題目要我們從一組數據中 選取五個數 使得這五個數乘積最大。

簡單一想 這個不很簡單 我們直接從中選取五個最大的數字 然后將這五個數的成乘積直接輸出不就完了嗎。 但是 仔細一想又發(fā)現 不對。剛剛只局限于正數的情況 可是這里還有負數呢! 所以 我們要對這選出來的五個數分情況討論。

我們要讓乘積最大 那么選出來的五個數的乘積 都盡量應該是正數 所以 我們如果要選擇負數 那么也最好讓它成雙成對的出現 因為負負得正 并且這個負數越小乘積就越大。根據此推斷 我們將這五個數分為以下幾種情況。

一:0個負數 5個正數。即選出這個數列里最大的五個數。

二:2個負數 3個正數。即選出這個數列里最大的三個數和最小的兩個數。

三:4個負數 1個正數。即選出這個數列里最大的一個數和最小的四個數。

然后我們將這三種情況算出來的乘積取一個最大值即可。

但是這樣就完了嗎? 不你想多了。因為如果這 n n n個數全是負數怎么辦?

很簡單 我們?yōu)榱俗尦朔e最大 我們將會選取最大的五個負數。但當我們再回頭看一下 發(fā)現這不就是第一種情況嗎?

所以 我們就不需要特判這種情況了。

代碼

#include<bits/stdc++.h>
using namespace std;
long long a[100005];
int n;
int t;
int main()
{
	freopen("maximum.in","r",stdin);
	freopen("maximum.out","w",stdout);
	//文件名輸入輸出 
	cin>>t;
	while(t--)
	{
		cin>>n;
		for(int i=1;i<=n;++i)
		cin>>a[i];
		//輸入 
		sort(a+1,a+n+1);// 給這個數組排序 
		cout<<max(a[n]*a[n-1]*a[n-2]*a[n-3]*a[n-4],max(a[n]*a[n-1]*a[n-2]*a[1]*a[2],a[n]*a[1]*a[2]*a[3]*a[4]))<<endl;//按照思路中所講的三種情況進行取最大值 并記得換行 
	}
	return 0;//返回 0 
}

總結

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!

相關文章

  • Opencv實現綠幕視頻背景替換功能

    Opencv實現綠幕視頻背景替換功能

    這篇文章主要為大家詳細介紹了Opencv實現綠幕視頻背景替換功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 詳解C++編程中的條件判斷語句if-else與switch的用法

    詳解C++編程中的條件判斷語句if-else與switch的用法

    這篇文章主要介紹了C++編程中的條件判斷語句if-else與switch的用法,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2016-01-01
  • C++之構造函數默認值設置方式

    C++之構造函數默認值設置方式

    這篇文章主要介紹了C++之構造函數默認值設置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • opencv實現輪廓高斯濾波平滑

    opencv實現輪廓高斯濾波平滑

    這篇文章主要為大家詳細介紹了opencv實現輪廓高斯濾波平滑,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • c語言詳解動態(tài)內存分配及常見錯誤的解決

    c語言詳解動態(tài)內存分配及常見錯誤的解決

    給數組分配多大的內存空間?你是否和初學C時的我一樣,有過這樣的疑問。這一期就來聊一聊動態(tài)內存的分配,讀完這篇文章,你可能對內存的分配有一個更好的理解
    2022-04-04
  • C++ AVLTree高度平衡的二叉搜索樹深入分析

    C++ AVLTree高度平衡的二叉搜索樹深入分析

    這篇文章主要介紹了C++ AVLTree高度平衡的二叉搜索樹,二叉搜索樹雖可以縮短查找的效率,但如果數據有序或接近有序二叉搜索樹將退化為單支樹,查找元素相當于在順序表中搜索元素,效率低下
    2023-03-03
  • C++重載運算符實現分數加減乘除

    C++重載運算符實現分數加減乘除

    這篇文章主要為大家詳細介紹了C++重載運算符實現分數加減乘除,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • OpenCV實現物體的凸包檢測的示例代碼

    OpenCV實現物體的凸包檢測的示例代碼

    給定二維平面上的點集,凸包就是將最外層的點連接起來構成的凸邊形,它是包含點集中所有的點。本文將利用OpenCV實現物體的凸包檢測,感興趣的可以了解一下
    2022-08-08
  • Qt Designer的簡單使用方法

    Qt Designer的簡單使用方法

    用 C++ 代碼編寫圖形界面的問題就是不直觀,因此 Qt 項目開發(fā)了專門的可視化圖形界面編輯器,本文就詳細的介紹一下
    2021-08-08
  • C語言雙指針多方法旋轉數組解題LeetCode

    C語言雙指針多方法旋轉數組解題LeetCode

    這篇文章主要為大家介紹了C語言雙指針使用多方法旋轉數組題解LeetCode,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02

最新評論

九寨沟县| 河源市| 平安县| 黑龙江省| 南召县| 三明市| 南召县| 鸡西市| 香河县| 景泰县| 博野县| 凤冈县| 全椒县| 阳新县| 民勤县| 孟津县| 定边县| 涟源市| 民权县| 习水县| 大关县| 乐安县| 庆云县| 逊克县| 嘉荫县| 湟源县| 西林县| 石棉县| 三门县| 镶黄旗| 五家渠市| 虎林市| 屯门区| 旬邑县| 大田县| 滦南县| 蕉岭县| 民权县| 鹤岗市| 布拖县| 凉城县|