通过率 54% · 提交 512 · 通过 276
小慕正在负责一个通信系统的用户调度模块。在系统中,对用户采用不同的调度策略,会导致不同的系统消耗和整体性能。 当前有n个待的用户,每个用户可以选择A、B、C三种调度策略中的一种,不同策略会消耗不同的系统资源。请你按照如下规则完成用户调度,并返回总的资源消耗值。 规则: 相邻的两个用户不能使用相同的调度策略。例如,若第一个用户选择了A策略,则第二个用户只能选择B或C策略。 对于单个用户而言,不同调度策略的系统消耗可以为数值。例如,某个用户使用A、B、C策略的系统消耗分别为15、8、17。 每个用户依次选择当前可用的、系统资源消耗最少的策略()。如果有多个满足条件的策略,则选择最后一个。
这类题属于华为 OD 机考真题方向中「100分 / 贪心」方向的高频题型,通常考察对「100分 / 贪心」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
第一行表示用户个数n 接下来每一行表示一个用户分别使用三个策略的系统消耗resA resB resC
最优策略组合下的总的系统资源消耗数
示例 1
输入示例
3 15 8 17 12 20 9 11 7 5
输出示例
24
1号用户使用B策略,2号用户使用C策略,3号用户使用B策略。系统资源消耗: 8 + 9 + 7 = 24。
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
本题乍一看会以为和 剑指Offer II 91. 粉刷房子 是同一道题。 两道题里都有类似的题目描述:
但实际上,这两个题目的所谓 “最优策略” 的含义是不相同的。
因此,虽然在题目描述上这两道题非常类似,但是 解法和代码却是完全不一样的。
进一步思考的话,这实际上也体现了 动态规划 和 贪心 分别适用于解决的问题类型:
对于某一个使用动态规划来计算得到全局最优结果的问题,如果它的局部最优结果恰好也等同于全局最优结果,则这个题目也可以使用贪心来解决。 譬如 【DP/贪心】2024E-贪心的商人 就可以同时分别使用贪心和动态规划来解决,正是因为这道题的局部最优结果等于全局最优结果。
回到这道题目本身,本题的 贪心选择策略 是非常简单的,直接按照题面描述来进行每个人的选择即可。
可以定义一个函数 find() 来进行每一次的选择,代码如下:
对于第一次选择,由于没有特定的上一次选择 pre_choice 的要求,我们可以这样调用函数:
除了第一次选择以外的其他选择,都要以上一次的选择结果来作为本次选择的 pre_choice,对应代码如下:
复杂度分析 设 n 为待调度的用户数。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有