题目要求:
代码如下:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
long max1 = 1;
long max2 = 1;
long max3 = 1;//存储最大的值
long min1 = 1;//存储最小的值
long min2 = 1;
int n;
cin >> n;
vector<long long> tmp(n);
for (int i = 0; i<n; i++)
{
cin >> tmp[i];
if (tmp[i]>max3)
{
max1 = max2;
max2 = max3;
max3 = tmp[i];
}
else if(tmp[i] > max2)
{
max1 = max2;
max2 = tmp[i];
}
else if(tmp[i]>max1)
{
max1 = tmp[i];
}
else if(tmp[i]<min1)
{
min2 = min1;
min1 = tmp[i];
}
else if(tmp[i]<min2)
{
min2 = tmp[i];
}
}
cout << max((max1*max2*max3), (min1*min2*max3));
return 0;
}
long类型的容器能够装更大的数字,可以增大程序的数据承受力。
实现思路,经分析最大值始终等于三个最大值相乘或者两个最小值乘以一个最大值,只需要对插入到容器中的数据一一进行排序即可直接输出最大值即可。关键在于要发现最大乘积的规律。