题目大意
给定一个集合,含有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;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。