题目粗心
给定一个汇合,含有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;}