- 博客(289)
- 收藏
- 关注
原创 华为OD最新机试真题-素数伴侣-OD统一考试(B卷)
摘要 题目要求从n个正整数中找出最多的"素数伴侣"对数(两数之和为素数且每个数字只能使用一次)。通过将数字视为二分图节点,使用匈牙利算法求解最大匹配。算法步骤:1) 判断素数;2) 构建素数和的邻接表;3) 匈牙利算法计算最大匹配数,结果除以2即为答案。代码实现包括素数判断、邻接表构建和匈牙利算法三部分,Java/C++/Python解法均采用相同思路。示例输入[2,5,6,13]输出2(2+5、6+13),输入[1,2,2,2]输出1(1+2)。时间复杂度主要取决于匈牙利算法的O(n^
2025-06-19 18:39:21
212
1
原创 华为OD最新机试真题-上班之路-OD统一考试(B卷)
Jungle 生活在美丽的蓝鲸城,大马路都是方方正正,但是每天马路的封闭情况都不一样。地图由以下元素组成:
2025-06-10 10:07:59
268
原创 华为OD最新机试真题-士兵过河-OD统一考试(B卷)
一支N个士兵的军队正在趁夜色逃亡,途中遇到一条急的大河。敌军在T的时长后到达河面,没到过对岸的士兵都会被消灭。现在军队只找到了1只小船,这船最多能同时坐上2个士兵。
2025-06-09 10:01:42
126
原创 华为OD最新机试真题-食堂供餐-OD统一考试(B卷)
开餐前食堂库存14份。取餐后库存剩余4份盒饭,加上第一个单位时间做出的3份,库存有7份第二个单位时间来的4员工从库存的7份中取4份。取餐后库存剩余4份盒饭,加上第一个单位时间做出的2份,库存有6份第二个单位时间来的4员工从库存的6份中取4份。取餐后库存剩余2份盒饭,加上第二个单位时间做出的2份,库存有4份第三个单位时间来的员工需要取5份,但库存只有4份,库存不够。为将员工取餐排队时间降低为0,食堂的供餐速度必须要足够快,现在需要根据以往员工取餐的统计信息,计算出一个刚好能达成排队时间为0的最低供餐速度。
2025-06-06 09:18:35
202
原创 华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
摘要: 题目要求从给定数组中选择3个元素(不足3个则全选)组成最小数字。解决方案分为三步:1)按数字长度升序排序,长度相同则按字典序排序;2)取前3个数字进行冒泡排序,比较相邻数字两种组合方式(a+b和b+a)的字典序,确保最终组合最小;3)输出排序后的数字组合。算法用Java、C++和Python实现,核心逻辑均为自定义排序+组合优化,时间复杂度主要由排序决定。测试用例验证了不同数组长度情况下的正确性。
2025-06-05 11:47:59
276
原创 华为OD最新机试真题-小明减肥-OD统一考试(B卷)
摘要:本文介绍了一个使用深度优先搜索(DFS)算法解决的组合问题。题目要求从n个运动中选出k个,使其卡路里总和等于给定值t。通过递归遍历所有可能的组合方案,当选中k个运动且总和满足条件时计数。提供了Java、C++和Python三种实现方式,均采用类似的DFS策略:维护当前位置、已选数量、当前总和等状态变量,分别处理选择/不选择当前元素的两种情况。算法时间复杂度为O(2^n),适用于n<10的小规模数据。示例输入4个运动(k=3,t=2)时,输出可行解数量为2。
2025-06-05 11:29:51
355
原创 华为OD最新机试真题-流水线-OD统一考试(B卷)
有个工厂有m条 流水线,来并行完成n个独立的作业,该工厂设置了一个调度系统,在安排作业时,总是优先执行处理时间最短的作业。
2025-06-04 14:48:33
224
原创 华为OD最新机试真题-反转每对括号间的子串-OD统一考试(B卷)
给出一个字符串s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。
2025-05-28 16:50:24
169
原创 华为OD最新机试真题-按单词下标区间翻转文章内容-OD统一考试(B卷)
输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。例如输入字符串"I am a developer” 区间[0,3]则输出"developer. a am l"。
2025-05-28 16:47:00
236
原创 2025年华为OD机试B卷-人气最高的店铺
摘要:该问题要求计算1号店铺需要最少发放多少购物补贴才能成为人气最高店铺。给定n位市民的初始投票意向和改投所需金额,通过优先购买改投成本低的选票,逐个尝试使1号店铺票数超过其他
2025-05-27 16:26:09
88
1
原创 斗地主 打顺子
在斗地主只扑克牌游戏中,扑克牌由小到大的顺序为:3.4,5.6,7.8,9,10.J,Q.K.A.2,玩家可以出的扑克牌阵型有:单张、对子、顺子、飞机、炸弹等
2025-05-12 15:40:13
342
原创 寻找链表的中间节点-C++
题目给出了链表的首结点地址和每个结点的信息(地址、数据、下一结点的地址),因此我们需要通过这些信息来重建链表并找到中间结点。- 使用哈希表(字典)来存储每个结点的信息,键是结点的地址,值是一个包含该地址对应的 Data 和 Next 的元组。给定一个单链表QL,请编写程序输出L中间结点保存的数据,如果有两个中间结点,则输出第二个中间结点保存的数据。其中Address是结点地址,Data是该结点保存的整数数据(0≤Data≤10^8),Next是下一结点的地址。- 通过链表结点的数量可以找到中间结点的位置。
2025-03-10 11:32:47
286
原创 最大括号深度
现有一字符串仅由‘(‘,’)’,‘{‘,’}’,‘[‘,’]’六种括号组成。(2)当遇到右括号时检查是否与栈顶匹配,不匹配或栈为空则直接输出 0;(1)使用 Stack 存放左括号,每次入栈时更新当前的最大深度;一个只包括(‘,’)’,‘{‘,’}’,‘[‘,’]’的字符串。(3)遍历结束后若栈不为空,则输出 0,否则输出最大嵌套深度。输出括号的最大嵌套深度,若字符串无效则输出0。无效字符串,有两种类型的左右括号数量不相等。无效字符串,存在未按正确顺序闭合的括号。一个整数,最大的括号深度。
2025-03-10 11:26:48
398
原创 小明周末爬山
3. BFS 特性:广度优先搜索可以保证,**第一个到达某个位置的路径就是最短路径,因为 BFS 是层层扩展的,每层的节点都是从上层节点扩展过来的。周末小明准备去爬山锻炼,0代表平地,山的高度使用1到9来表示,小明每次吧山或下山高度只能相差k及K以内,每次只能上下左右一个方向上移动一格,小明从左上角(0,0)位置出发。根据山地图可知,能爬到的最高峰在(0,2)位置,高度为2,最短路径为(0,0)-(0,1)-(0,2),最短步数为2。请问小明能爬到的最高峰多高,到该最高峰的最短步数,输出以空格分隔。
2025-03-09 16:30:00
92
原创 MELON的难题
均分时可以1.1.1.1.1.9.7和10.8.3,也可以1.1.1.1.9.8和10,7.3,1,或者其他均分方式,但第一种只需要拿出重量为10,8,3的3块雨花石,第二种需要拿出4块,所以输出3(块数最少)。如果能找到这个子集,说明可以平分雨花石。- 如果 dp[target] 仍然是初始值(例如 ∞),说明无法凑出重量为 target 的子集,即不能平分雨花石,此时输出 -1。- 这里 dp[j - weights[i]] + 1 表示加入当前雨花石后,能够凑出重量 j,并更新所需雨花石的最小数量。
2025-03-08 21:25:10
230
原创 模拟目录管理-C++
不支持嵌套路径和绝对路径,如mkdir abc/efg, cd abc/efg, mkdir /abc/efg, cd /abc/efg是不支持的。2)进入目录命令:cd 目录名称, 如cd abc为进入abc目录,特别地,cd ..为返回上级目录,如果目录不存在则不执行任何操作。1)创建目录命令:mkdir 目录名称,如mkdir abc为在当前目录创建abc目录,如果已存在同名目录则不执行任何操作。在根目录创建一个abc的目录并进入abc目录中查看当前目录路径,输出当前路径/abc/。
2025-03-06 15:55:30
341
原创 字符串化繁为简-Java
输入字符串为"never(dont)give(run)up(f)()",初始等效字符集合为('d','o','n','t')、('r','u','n'),由于等效关系可以传递,因此最终等效字符集合为(''d','o','n','t','r','u'),将输入字符串里的剩余部分按字典序最小的等效字符替换后得到"devedgivedp。等效字符集为('a','A','b'),输入字符里没有被小括号包含的子字符串集合为"abcdefgAC",将其中字符替换为字典序最小的等效字符后输出为:"AAcdefgAC"
2025-03-06 15:52:53
202
原创 二叉树计算-C++
在中序遍历中定位根节点:根据前序遍历确定的根节点,在中序遍历中查找该节点,确定左右子树的分界。递归构建左右子树:使用根节点在中序遍历中的位置分割中序序列,以分别构建左右子树。本题难点在于,值可以是重复的,所以说我们需要判断找到的中序节点位置是否是正确的。请由该二叉树生成一个新的二叉树,它满足其树中的每个节点将包含原始树中的左子树和右子树的和。2行整数,第1行表示二叉树的中序遍历,第2行表示二叉树的前序遍历,以空格分割。在中序遍历中,根节点位于其左右子树的中间,这一特性是重建二叉树的关键。
2025-03-05 10:15:37
112
原创 计算堆栈中的剩余数字-Python
当存入3时,3=2+1,3、2、1全部出栈,重新入栈元素6(6=2*3),此时栈中有元素6;每当元素入栈时,如果n1=n2+...+ny(y的范围[2,x],1<=x<=1000),则n1~ny全部元素出栈,重新入栈新元素m(m=2*n1)。5+10+20+50=85, 输入85时,5、10、20、50、85全部出栈,入栈170,最终依次出栈的数字为1和170。使用单个空格隔开的正整数的字符串,如"5 6 7 8", 左边的数字先入栈,输入的正整数个数为x,1<=x<=1000。
2025-03-05 10:04:11
215
原创 计算疫情扩散时间-C++
每次我们扩展所有当前感染区域的上下左右相邻区域,将这些区域标记为感染,然后继续下一天的扩展,直到所有区域都被感染为止。-行 N*N 个数字(只包含0,1,不会有其他数字)表示一个地图,数字间用","分割。如果初始地图上所有区域全部都被感染,或者没有被感染区域,返回-1。- 如果地图上所有区域都已经感染或没有感染区域,直接返回 -1。在一个地图中(地图由n*n个区域组成),有部分区域被感染病菌。- 以天为单位,扩展所有当前感染区域的上下左右相邻区域。请根据给定的地图计算,多少天以后,全部区域都会被感染。
2025-03-04 10:05:00
297
原创 服务失效判断
所以可用的是a3、a6,在依赖关系列表中a6先出现,所以输出:a6,a3。依赖关系列表中提及的所有服务中可以正常工作的服务列表,用半角逗号分隔,按依赖关系列表中出现的次序排序,·依赖具有传递性,如 A依赖 B,B 依赖 C,当 C故障时导致 B 故障,也导致 A故障。依赖关系列表、故障列表非空,且依赖关系数,故障服务数都不会超过3000,服务标识格式正常。a1依赖a2,a2故障导致a1也故障,没有正常节点,输出一个逗号。a1依赖a2,a2依赖a3,所以a2故障,导致a1不可用,但。
2025-03-04 09:59:57
1086
原创 查找接口成功率最优时间段-C++
B、通过计算小于等于2的最长时间段为:数组下标为0-1即[0, 0],数组下标为3-4即[2, 2],数组下标为6-7即[0, 2],这三个部分都满足平均值小于等2的要求,因此输出0-1 3-4 6-7。双指针,遍历所有的情况,检查这个区间是否可行即可,可以使用前缀和来降低复杂度,也可以不使用,这题数据很小。A、输入解释:minAverageLost=2,数组[0, 0, 100, 2, 2, 99, 0, 2]A、输入解释:minAverageLost=1,数组[0, 1, 2, 3, 4]
2025-02-25 15:35:30
258
原创 TLV解码-C++
码流以某信元的 Tag 开头,Tag 固定占一个字节,Length 固定占两个字节,字节序只为小端序。现给定 TLV 格式编码的码流,以及需要解码的信元 Tag,请输出该信元的 Value。TLVQ编码是按 ITag Length value 格式进行编码的,一段码流中的信元用 Tag 标识,Tag 在码流中唯一不重复,Lengt 表示信元Value的长度,Value 表示信元的值。- 输入包括两行,第一行是需要查询的Tag,第二行是16进制码流,码流中的每个字节用空格分隔。
2025-02-25 15:33:11
122
原创 太阳能板最大面积-Java
给航天器一侧加装长方形或正方形的太阳能板(图中的红色斜线区域),需要先安装两个支柱(图中的黑色竖条),再在支柱的中间部分固定太阳能板。给定一组支柱高度,任取两根支柱能形成一个矩形区域,该区域的面积由两根支柱中较矮的一根的高度乘以两者之间的距离决定。指针移动策略:为了可能获得更大的面积,移动较矮那一侧的指针(因为较矮支柱决定了当前的高度,只有找到更高的支柱才能增大面积)。现提供一组整形数组的支柱高度数据,假设每根支柱间距离相等为1个单位长度,计算如何选择两根支柱可以使太阳能板的面积最大。
2025-02-24 09:56:43
130
原创 VLAN资源池-C++
定义一个 VLAN ID 的资源池(下称VLAN资源池),资源池中连续的VLAN用 开始VLAN-结束VLAN 表示,不连续的用单个整数表示,所有的VLAN用英文逗号连接起来。原VLAN资源池中有VLAN5、6、7、8、9、10、15、18、20.21、30,从资源池中移除15后,资源池中剩下的VLAN为 5、6、7、8、9、10、18、20、21、30,按照题目描述格式并升序后的结果为5-10,18,20-21.30。如果申请的VLAN不在原VLAN资源池内,输出原VLAN资源池升序排序后的字符串即可。
2025-02-23 14:52:51
101
原创 学生方阵-Java
请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。- 对于每一个元素 matrix[i][j],如果它是男生('M'),则检查从该点开始的四个方向上的连续男生的数量。- 从当前元素 (i, j) 出发,根据四个方向向量,检查在这些方向上的下一个元素是否也是男生('M')。- 反对角线方向:dx = [1], dy = [-1](增加行索引,减少列索引)- 如果当前方向上的男生数量超过了之前记录的最大值,则更新 maxCount。
2025-02-23 14:49:57
95
原创 云短信平台优惠活动-Java
第二行给出售价表,P1,P2...Pn, 其中 1<=n<=100,Pi为充值i元获得的短信条数。题目要求在给定的预算内,购买尽可能多的短信条数。每个价格对应不同的短信条数,目标是通过选择合适的套餐,获得最多的短信。遍历每个套餐价格,更新 dp 数组,确保每次选择可以带来最多短信条数的套餐。定义一个数组 dp[i],表示在预算为 i 元时,最多能购买的短信条数。现在给出客户预算,和优惠售价序列,求最多可获得的短信总条数。分两次充值最优,1元、5元各充一次。
2025-02-22 18:06:42
92
原创 相对开音节
给定一个字符串,以空格为分隔符,反转每个单词中的字母,若单词中包含如数字等其他非字母时不进行反转。反转后计算其中含有相对开音节结构的子串个数(连续的子串中部分字符可以重复)。ekam含非英文字符所以未反转,其中cake、keke为相对开音节子串,返回2。反转后为 make a cake 其中make、cake为相对开音节子串,返回2。相对开音节构成的结构为:辅音+元音(aeiou)+ 辅音(r除外)+ e。字符串,以空格分割的多个单词,字符串长度<10000,字母只考虑小写。(2)相对开音节判断。
2025-02-22 18:01:31
1173
原创 寻找链表的中间节点-Java
题目给出了链表的首结点地址和每个结点的信息(地址、数据、下一结点的地址),因此我们需要通过这些信息来重建链表并找到中间结点。- 使用哈希表(字典)来存储每个结点的信息,键是结点的地址,值是一个包含该地址对应的 Data 和 Next 的元组。给定一个单链表QL,请编写程序输出L中间结点保存的数据,如果有两个中间结点,则输出第二个中间结点保存的数据。其中Address是结点地址,Data是该结点保存的整数数据(0≤Data≤10^8),Next是下一结点的地址。- 通过链表结点的数量可以找到中间结点的位置。
2025-02-20 16:35:36
252
原创 找单词-Python
输出一个位置下标字符串,拼接格式为:第1个字符行下标+","+第1个字符列下标+”,”+第2个字符行下标+""+第2个字符列下标.…给一个字符串和一个 二维字符数组,如果该字符串存在于该数组中,则按字符串的字符顺序输出字符串每个字符所在单元格的位置下标字符串,如果找不到返回字符串“N”1.需要按照字符串的字符组成 顺序搜索,且搜索到的位置必须是相邻单元格,其中"相邻单元格"是指那些水平相邻或垂直相邻的单元格。- DFS的目标:DFS 的任务是找到目标字符串的每个字符,保证每个字符与前一个字符相邻。
2025-02-20 16:32:18
428
原创 一种字符串压缩表示的解压
例如:字符串“aaabbccccd”经过压缩成为字串“3abb4cd”请您编写解压函数,根据输入的字符串,判断其是否为合法压缩过的字符串若输入合法则输出解压缩后的字符串,否则 输出字符串只“!- 如果压缩的数量为1或2(例如:`1a`或`2a`),这是非法的压缩形式,应返回“!若判断输入为合法的经过压缩后的字符串,则输出压缩前的字符串,若输入不合法,则输出字符串“!- 不能有相同的字母被连续压缩(例如:`3a3a`是不合法的,因为两个压缩段的字母相同)。- 空字符串应被认为是合法的,直接返回空字符串。
2025-01-06 16:23:08
827
原创 ai面板识别
每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。
2024-11-29 10:29:19
1496
2
原创 最大矩阵和
每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。给定一个二维整数矩阵,要在这个矩阵中选出一个子矩阵,使得这个子矩阵内所有的数字和尽量大,我们把这个子矩阵称为和最大子矩阵,子矩阵的选取原则是原矩阵中一块相互连续的矩形区域。输入的第一行包含2个整数n,m(1
2024-11-25 09:50:23
1129
原创 箱子之字形摆放
每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子的摆放位置。输入一行字符串,通过空格分隔,前面部分为字母或数字组成的字符串str,表示箱子;.str只包含字母和数字,1
2024-11-22 09:35:52
650
原创 德州扑克-
输入由5行组成,每行为一张牌大小和花色,牌大小为2~10、J、Q、K、A,花色分别用字符H、S、C、D表示红桃、黑桃、梅花、方块。4、判断x有没有出界,xn表示出界了,那么先退一步,即x-=f;五张牌,每张牌由牌大小和花色组成,牌大小2~10、J、Q、K、A,牌花色为红桃、黑桃、梅花、方块四种花色之一.·牌型1,同花顺:同一花色的顺子,如红桃2红桃3红桃4红桃5红桃6。·牌型5,顺子:花色不一样的顺子,如红桃2黑桃3红桃4红桃5方块6。输出牌型序号,5张牌符合多种牌型时,取最大的牌型序号输出。
2024-11-21 09:44:01
982
2
原创 最大花费金额
为了用户方便,程序使用 Scanner 读取输入,支持以逗号分隔的价格格式和单独的预算金额输入。通过清晰的条件判断和最大值比较,确保输出的结果满足要求。双十一众多商品进行打折销售,小明想购买自己心仪的一些物品,但由于受购买资金限制,所以他决定从众多心仪商品中购买三件而且想尽可能的花完资金。1、这个题的核心思路是遍历所有可能的3个商品组合,计算每个组合的总价格,并找出在预算范围内的最大花费金额。·输入第一行为一维整型数组M,数组长度小于100,数组元素记录单个商品的价格,单个商品价格小于1000.
2024-11-19 09:45:28
748
1
原创 数字序列比大小
(iii)如果 A[A_max] = B[B_max],此时如果A的最小数字和B的最大数字匹配,虽然可能A最坏暂时输 1 分(A[A_min] < B[B_max])或者平手(A[A_min] = B[B_max]),在暂时落后一分的情况下,至少存在一个数是可以胜一分的,也就是和A的最小和B的最小匹配情况相同,但可能存在更优的情况使得获得更多分,所以选择A的最小数字和B的最大数字匹配。(ii)如果 A[A_max] < B[B_max],说明 A 的最大数字无法战胜 B 的最大数字,B的最大数字;
2024-11-18 09:40:56
1021
1
原创 会议接待-
对于每个代表团人数 group,我们从容量 car_capacity 向下更新 dp 数组:如果容量 i - group 是可达的,那么容量 i 也是可达的。某组织举行会议,来了多个代表团同时到达,接待处只有一辆汽车,可以同时接待多个代表团为了提高车辆利用率,请帮接待员计算可以坐满车的接待方案,输出方案数量.第一行 代表团人数,英文逗号隔开,代表团数量小于 30,每个代表团人数小于 30第二行 汽车载客量,汽车容量小于 100。时间复杂度:O(n * C),其中 n 是代表团数量,C 是汽车容量。
2024-11-15 09:50:56
1181
1
原创 最短木板长度
给第3块木板长度增加1后,这5块木板长度变为[4,5,4,5,5],剩余木料的长度为1。给第1块木板长度增加1,给第3块木板长度增加2后这5块木板长度变为[5,5,5,5,5],最短的木板的长度最大为5.- 每次从堆中取出当前最短的木板长度 min_len,取出 min_len 的数量 num(即当前长度的木板数量)。小明买了一块长度为 m 的木料,这块木料可以切割成任意块,拼接到已有的木板上,用来加长木板。输出的唯--行包含一个正整数,表示加长木板后,最短木板的长度最大可以为多少?
2024-11-12 09:02:28
890
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人