#深信服9.14笔试题-C/C++客户端-第2题
问题描述:
两熊分蜜
吵架分家;
要求:
- 尽可能的重量均分,至少自己能少的最少;
- 在罐子数量上差距不能超过1。
输入描述:
- 每一行给出蜜罐的数量,2<= n <= 100
- 每蜜罐的重量 1< M <= 500
输出描述:
两个数字A B 分别表示熊大和熊二能分到蜜的总重
示例1:
输入:
3
447
56
249
输出:
305 447
代码实现
#深信服笔试题##深信服##笔经##include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> vec; int num_A = 0, num_B = 0; int n; cin >> n; while (n--) { int m; cin >> m; vec.push_back(m); } sort(vec.begin(), vec.end()); //判断奇偶数 int cnt = 0; if (vec.size() % 2 == 0) { cnt = vec.size() / 2; } else { cnt = (vec.size() + 1) / 2; } int sum = 0; //总和 //求平均数 for (int i = 0; i < vec.size(); i++) { sum += vec[i]; //总数 } double sum_half; sum_half = sum / 2.0; //均值 int Diss = INT_MAX; //差值 int result = 0; for (int i = 0; i < cnt;i++) { int k = cnt; double temp = 0; //临时总量 int diss = 0; int left = i, right = i + k -1; while (k--) { temp += vec[right--]; } if (abs(sum_half - temp) < Diss){ Diss = abs(sum_half - temp); result = temp; } } cout << result << " " << sum - result; return 0; }