0

尝试编写函数来计算 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 类型。

4

0 回答 0