#深信服9.14笔试题-C/C++客户端-第2题

问题描述:
两熊分蜜
吵架分家;
要求:
  1. 尽可能的重量均分,至少自己能少的最少;
  2. 在罐子数量上差距不能超过1。
输入描述:
  1. 每一行给出蜜罐的数量,2<= n <= 100
  2. 每蜜罐的重量 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;
}

#深信服笔试题##深信服##笔经#
全部评论
谢谢
点赞 回复 分享
发布于 2021-09-14 23:30
先排序,妙啊,不过怎么理论证明是最优值呢?
点赞 回复 分享
发布于 2021-09-15 00:25
这题我dp过的。。。
点赞 回复 分享
发布于 2021-09-15 02:32
这题我偷了百分之二十,哈哈
点赞 回复 分享
发布于 2021-09-15 07:37
大佬 能解释一下吗
点赞 回复 分享
发布于 2021-09-15 08:58
这题简单的一批
点赞 回复 分享
发布于 2021-10-23 09:38
这代码都是错的呀
点赞 回复 分享
发布于 2023-06-29 00:40 四川

相关推荐

10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
4 20 评论
分享
牛客网
牛客企业服务