给你 输入 n个数,然后选择三个不同位置数相乘最大。
时间: 2024-04-08 11:33:58 浏览: 47
三个数的最大乘积1
好的,你可以按照以下步骤来解决这个问题:
1. 初始化三个变量max1、max2和max3,分别表示最大的三个数。
- 将max1、max2和max3的初始值设为负无穷大(INT_MIN)。
2. 接收用户输入的n个数,并遍历这些数。
- 在遍历的过程中,更新max1、max2和max3的值:
- 如果当前数大于max1,则将max3的值更新为max2,max2的值更新为max1,max1的值更新为当前数。
- 如果当前数介于max1和max2之间,则将max3的值更新为max2,max2的值更新为当前数。
- 如果当前数介于max2和max3之间,则将max3的值更新为当前数。
3. 计算三个最大数的乘积,并将结果保存在变量product中。
- 将product的初始值设为1。
- 如果max1、max2和max3都不是负无穷大,则将它们相乘并更新product的值。
4. 输出最大乘积结果。
下面是一个使用C++实现的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <climits>
long long findMaxProduct(std::vector<int>& nums) {
long long max1 = INT_MIN, max2 = INT_MIN, max3 = INT_MIN;
for (int num : nums) {
if (num > max1) {
max3 = max2;
max2 = max1;
max1 = num;
} else if (num > max2 && num < max1) {
max3 = max2;
max2 = num;
} else if (num > max3 && num < max2) {
max3 = num;
}
}
long long product = 1;
if (max1 != INT_MIN && max2 != INT_MIN && max3 != INT_MIN) {
product = max1 * max2 * max3;
}
return product;
}
int main() {
int n;
std::cout << "Enter the number of elements: ";
std::cin >> n;
std::vector<int> nums(n);
std::cout << "Enter " << n << " numbers: ";
for (int i = 0; i < n; i++) {
std::cin >> nums[i];
}
long long maxProduct = findMaxProduct(nums);
std::cout << "Maximum product of three numbers: " << maxProduct << std::endl;
return 0;
}
```
你可以根据需要修改输入和输出的方式,以适应你的应用场景。希望对你有帮助!
阅读全文