华为笔试题分享:分糖果
2022.4.13 参加了华为笔试,三道算法题, 个人感觉题目有点难
第一题:硬件资源的最佳分配
第二题:工单的分配策略
第三题:分糖果
第一题,题目看着都头疼,直接放弃了;
第二题,勉强把题目读懂了,堆了一部分代码,然后后面没思路了,感觉是用动态规划或贪心来做;
第三题,虽然读懂了题目,但最后也是没做出来。
不出意外的话,应该是挂了,没办法,自己太菜怪不得别人。
总结原因的话:
其一,主要还是算法逻辑训练不够,思维不够开阔
其二,对这种应用性较强的题目训练较少,一般这种题目很长,且题目不好理解,需要一定耐心
其三,平时刷题习惯于力扣的核心代码模式,对acm模式了解甚少,第一次用acm模式非常不习惯
由于第三题题目较短,能完整地回忆下来,而且就这样我也不太甘心,所以打算把第三题复盘一下,以下是我复盘的结果。
----------------------------------2022.4.13 华为笔试题 第三题:分糖果---------------------------------
-题目描述:
现有几袋糖果,老师要将糖果分给小张和小王两个同学,每一袋都有一定数量的糖果,每袋糖果只能全部分给他们其中一人,要求最终两人分得糖果的数量相同。
输入:糖果的袋数和各袋中糖果的数量;
输出:平分下来的糖果数量,以及两个人分别分到的各袋中糖果的数量,如果无法平分,则直接输出-1
-示例1:
输入:
5
2 6 5 4 7
输出:
12
2 4 6
5 7
-示例2:
输入:
4
1 2 3 5
输出:
-1
代码如下:
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>using namespace std;// 回溯:找到数组中的子数组,使子数组和为原数组的一半
void backtrace(vector<int>& nums, vector<int>& res, vector<int>& combine, int target, int startIdx, int sum) {if (sum == target) {res.resize(combine.size());copy(combine.begin(), combine.end(), res.begin());return;}for (int i = startIdx; i < nums.size() && sum + nums[i] <= target; i++) {sum += nums[i];combine.push_back(nums[i]);backtrace(nums, res, combine, target, i + 1, sum);combine.pop_back();sum -= nums[i];}}//分析:要求将一个数组分为两个子数组,子数组和皆为原数组和的一半
int main()
{// input:int n; // 糖果的袋数cin >> n;vector<int> nums(n); // 每袋糖果中,糖果的数量for (int i = 0; i < n; i++) {cin >> nums[i];}// 逻辑代码:int sum = 0;int maxNum = nums[0];for (int num : nums) {sum += num;maxNum = max(maxNum, num);}int target = sum / 2;if (sum & 1 || maxNum > target) {cout << -1 << endl;exit(0);}sort(nums.begin(), nums.end());vector<int> res; // 记录平分到的各袋糖果数量 vector<int> combine; backtrace(nums, res, combine, target, 0, 0); // 利用回溯得到res, 即其中一人分得的各袋糖果数量if (res.size() == 0) { // 没有分得糖果,即平分失败,输出-1cout << -1 << endl;exit(0);}vector<int> res2(nums.size() - res.size());set_difference(nums.begin(), nums.end(), res.begin(), res.end(), res2.begin()); // res2 = nums-res得到剩下的各袋糖果// output:cout << "平分的糖果数量:" << target << endl;cout << "小张分到的各袋糖果数:";for (int num : res) {cout << num << " ";}cout << '\n' << "小王分到的各袋糖果数:";for (int num : res2) {cout << num << " ";}cout << endl;system("pause");return 0;
}
华为笔试题分享:分糖果相关推荐
- 潇洒郎: 去哪儿2021届/2020年开发岗笔试题分享
去哪儿2021届/2020年开发岗笔试题分享 1. 2020年,直播已经成为去哪儿网酒店预售的新武器, 去哪儿网CEO刚哥想从公司的m名员工中挑选n名参与自己的直播,已知m小于100请问一共有多少种选 ...
- 华为笔试题 -- 多个数组按顺序合并(Java代码实现)
华为笔试题 – 多个数组按顺序合并(Java代码实现) 题目描述: 现在有多组整数数组,需要将他们合并成一个新的数组.合并规则,从每个数组里按顺序取出固定长度的内容合并到新的数组中,取完的内容会删除掉 ...
- 2019届华为笔试题(软件卷)
华为笔试题共3道编程题.第一题100分,第二题200分,第三题300分,一共600分. 第一题: 输入描述: 1.忽略小数点,例如"A1.2",认为包含整数1和2: 2.如果整数的 ...
- 华为笔试题---明明的随机数
题目 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着 ...
- 神州数码笔试题C语言,神州数码程序类笔试题分享
神州程序类笔试题分享: 神州数码笔试1)description of the students table: sid_id number start_date date end_date date w ...
- 育碧Web实习笔试题分享
育碧的Web实习笔试题分享 笔试题目一共有20道,主要有选择题,简答题以及编程题,但是大部分都是简答题,题干是全英语的,但是大致题意还是能够读懂.考查知识大体涉及JavaScript.HTTP.CSS ...
- 【leetcode】第394题:字符串解码(华为笔试题)
题目:给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数. ...
- 【超详细】数据分析笔试题分享,可以收藏后仔细阅读
大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 又到了笔 ...
- 金九银十!2021阿里+头条+腾讯等大厂Java笔试题分享
前言 时至今日, Spring在Java生态系统与就业市场上,面试出镜率之高,投产规模之广,无出其右.随着技术的发展,Spring从往日的IoC框架,已发展成Cloud Native基础设施,衍生出大 ...
- 数据分析与数据挖掘方面招聘的笔试题分享
上网搜索到一些相关职位的笔试题,集结于此,希望对大家有用 A.阿里巴巴2011数据分析师实习生笔试题 1.什么是异常值,列举一种找出连续型变量异常值的方法. 2.什么是聚类分析,有哪些聚类分析方法,写 ...
最新文章
- 怎样用c语言写高速超速罚款标准,pta高速公路超速处罚(C语言)
- 【iOS数据持久化】偏好设置(UserDefaults)
- 【技术短文】基于深度负相关学习的人群计数方法
- 深入理解分布式技术 - 负载均衡策略
- java论文翻译_Java技术(外文文献翻译)
- Exception in thread “main“ java.lang.IllegalStateException: Duplicate key xxx
- 微型计算机和接口技术考题,微型计算机接口技术以及应用考题
- adb 最大连接_工具集 | Android Studio—使用 WI-FI 进行 ADB 调试
- bat中的start
- 查找算法——插值查找
- 怎样才算优秀的xyz员
- 位运算 取某一位 java_Java 位运算妙用
- java修改excel图表数据源,导出excel图表文件
- el-table 树形表格 自定义展开图标_目前比较满意的安卓桌面启动器:非线性动画 + 精美图标包...
- ubuntu输入法快捷键设置ctrl+shift
- 【期末复习】现代管理科学基础
- Scratch软件编程等级考试一级——20220918
- Go语言学习系列 -- 大道至简—GO语言最佳实践​​​​​​​
- Linux(Debian)安装Geany教程
- unraid虚拟linux系统,UNRAID教程:3分钟用unraid自带的虚拟机安装黑群晖NAS DSM系统很强大!...
热门文章
- cs231n softmax作业笔记
- java batik 乱码_Batik渲染png图片异常的bug修复
- Oracle P6培训系列:09定义计划编制视图
- 一个简单的dos命令实现无限弹窗,卡死电脑
- oracle 错误01017,ORA-01017:用户名密码出错 故障实例
- 机器学习十大算法简介
- 【MATLAB深度学习工具箱】学习笔记--字符识别Character Recognition
- ubuntu vscode 配置字体_配置vscode终端字体,vscode终端字体
- 国际学术期刊会议大排名与常用的期刊会议名字
- SQL 比较全的银行列表、带名称缩写、带银行logo