#深信服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 四川

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
4 20 评论
分享
牛客网
牛客企业服务