参考程序代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main() {int n;cin >> n;vector<int> nums(n);int totalSum = 0;// 输入数组并计算总和for (int i = 0; i < n; ++i) {cin >> nums[i];totalSum += nums[i];}// 计算前缀和数组vector<int> prefix(n + 1, 0); // prefix[i] 表示 nums[0] 到 nums[i-1] 的和for (int i = 1; i <= n; ++i) {prefix[i] = prefix[i - 1] + nums[i - 1];}int minDiff = INT_MAX;// 遍历所有可能的分割点for (int i = 1; i < n; ++i) {int leftSum = prefix[i]; // 左半部分的和int rightSum = totalSum - leftSum; // 右半部分的和int diff = abs(leftSum - rightSum); // 计算差值minDiff = min(minDiff, diff); // 更新最小差值}cout << minDiff << endl;return 0;
}