题目粗心
给定一个汇合,含有 n 个数字,要求将其划分为长度为 n1 和 n2 的两个汇合,并且要求两个汇合和之差最大,n1 与 n2 的差距最小
算法思路
最为直观的感触就是将数组进行排序,而后选取 n / 2 长度的前半部分为第一个局部, 剩下的为第二局部,这样两者元素个数之差最小,和之差最大。
提交后果
AC 代码
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int n, sum = 0, temp = 0;
scanf("%d", &n);
int v[n];
for (int i = 0; i < n; i++) {scanf("%d", &v[i]);
sum += v[i];
}
sort(v, v+n);
for (int i = 0; i < n / 2; i++)
temp += v[i];
printf("%d %d", n % 2, sum - 2 * temp);
return 0;
}