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 4

out:
60
*/




【参考文献】
https://www.lanqiao.cn/problems/315/learning/



 

猜你喜欢

转载自blog.csdn.net/hnjzsyjyj/article/details/143423245