```cpp #include <iostream> #include <vector> #include <algorithm> // 函数用于计算 (ai + aj) * ak 的最小值 long long calculateMinValue(const std::vector<int>& A) { int n = A.size(); // 初始化最小值为一个较大的值 long long minVal = LLONG_MAX; // 三重循环遍历所有可能的 (i, j, k) 组合 for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (i == j) continue; // 确保 i 和 j 不同 for (int k = 0; k < n; ++k) { if (k == i || k == j) continue; // 确保 k 与 i 和 j 都不同 // 计算 (ai + aj) * ak 的值 long long currentVal = static_cast<long long>(A[i] + A[j]) * A[k]; // 更新最小值 minVal = std::min(minVal, currentVal); } } } return minVal; } int main() { std::vector<int> A = {1, 2, 3, 4}; // 示例数组 long long result = calculateMinValue(A); std::cout << "最终的最小值是: " << result << std::endl; return 0; } ``` 代码解释 1. 函数 `calculateMinValue`: - 该函数接受一个整数向量 `A` 作为输入。 - 初始化 `minVal` 为 `LLONG_MAX`,用于存储最小值。 - 使用三重循环遍历所有可能的 `(i, j, k)` 组合,确保 `i`、`j`、`k` 互不相同。 - 对于每一组 `(i, j, k)`,计算 `(A[i] + A[j]) * A[k]` 的值,并更新 `minVal`。 - 最后返回 `minVal`。 2. 主函数 `main`: - 定义一个示例数组 `A`。 - 调用 `calculateMinValue` 函数计算最小值。 - 输出最终的最小值。 额外注意的逻辑点 1. 要确保 `i`、`j`、`k` 互不相同,避免重复计算。 2. 由于 `(A[i] + A[j]) * A[k]` 的结果可能很大,使用 `long long` 类型来避免溢出。 3. 在更新 `minVal` 时,使用 `std::min` 函数确保存储的是最小值。 [2025-07-30 14:21:47 | AI写代码神器 | 626点数解答]