lanqiaoOJ 315:寻找3个数的最大乘积
【题目来源】
https://www.lanqiao.cn/problems/315/learning/
【题目描述】
实现一个算法:在数组中找到 3 个数字的最大乘积。
例如,数组 [5,-2,3,1,-1,4] 中 3 个数字的最大乘积为 60。
【输入格式】
第一行为数字 N(3≤N≤1000),表示数组元素的个数。
第二行为数组元素 Ai,-1000≤Ai≤1000。
【输出格式】
输出一行,为 3 个数字的最大乘积。
【输入样例】
6
5 -2 3 1 -1 4
【输出样例】
60
【算法分析】
排序后,三个数的最大乘积只有两种可能:
(1)三个最大的正数的乘积。
(2)两个最小的负数的乘积,再乘以最大的正数。
【算法代码】
#include <bits/stdc++.h>
using namespace std;const int maxn=1005;
int a[maxn];int main() {int n;cin>>n;for(int i=1; i<=n; i++) cin>>a[i];sort(a+1,a+1+n);int t=max(a[1]*a[2]*a[n], a[n]*a[n-1]*a[n-2]);cout<<t<<endl;return 0;
}/*
in:
6
5 -2 3 1 -1 4out:
60
*/
【参考文献】
https://www.lanqiao.cn/problems/315/learning/