如果数的个数是3,则直接输出这3个数的乘积。如果数的个数大于3,则对其进行从大到小排列,最大值要么是排列后前3个数的乘积,要么是第1个数和最后2个数的乘积。
#include <iostream>
#include <algorithm>
#include <functional>
using namespace std;
int max(int a, int b)
{
return a > b ? a : b;
}
int main(void)
{
int n; // 数的个数
cin >> n;
int* a = new int[n];
for (int i = 0; i < n; i++) // 输入n个数并保存到数组a[]中
{
cin >> a[i];
}
if (n == 3) // 如果数的个数是3,则直接输出它们的乘积
cout << a[0] * a[1] * a[2] << endl;
else if (n > 3) // 如果数的个数大于3
{
sort(a, a + n, greater<int>()); // 先对数组a进行从大到小排序
cout << max(a[0] * a[1] * a[2], a[0] * a[n - 1] * a[n - 2]) << endl; // 最大值是前3个数的乘积或者第1个数和最后两个数的乘积
}
return 0;
}
运行结果: