尝试编写函数来计算 C++ 中的最大成对积,但由于某种原因计算错误。有人可以查看我的代码吗?
#include <iostream>
#include <vector>
using std::vector;
using std::cin;
using std::cout;
using std::max;
int MaxPairWiseProduct(const vector<int>& numbers) {
int product = 0;
int n = numbers.size();
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
product = max(product, numbers[i] * numbers[j]);
}
}
return product;
}
int main() {
int n;
cin >> n;
vector<int> numbers(n);
for (int i = 0; i < n; ++i) {
cin >> numbers[i];
}
int product = MaxPairWiseProduct(numbers);
cout << product << "\n";
return 0;
}
问题解决了 - 基本上,发生的错误是整数溢出,因此编译后它没有正确输出值。解决方案是在计算乘积和存储结果时使用 int64_t 类型。