题目粗心

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