最新华为OD机试
题目描述
任务编排服务负责对任务进行组合调度。
参与编排的任务有两种类型,其中一种执行时长为taskA,另一种执行时长为taskB。
任务一旦开始执行不能被打断,且任务可连续执行。
服务每次可以编排num个任务。
请编写一个方法,生成每次编排后的任务所有可能的总执行时长。
输入描述
第1行输入分别为
- 第1种任务执行时长taskA
- 第2种任务执行时长taskB
- 这次要编排的任务个数num
以逗号分隔。
备注
注:每种任务的数量都大于本次可以编排的任务数量
- 0 < taskA
- 0 < taskB
- 0 ≤ num ≤ 100000
输出描述
数组形式返回所有总执行时时长,需要按从小到大排列。
示例1
输入
1,2,3
输出
[3, 4, 5, 6]
说明
可以执行 3 次 taskA,得到结果 3;执行 2 次 taskA和 1 次 taskB,得到结果 4 。以此类推,得到最终结果。
解题思路
-
任务类型:
- 有两种任务类型:一种任务的执行时长为
taskA
,另一种任务的执行时长为taskB
。
- 有两种任务类型:一种任务的执行时长为
-
任务编排:
- 每次可以编排
num
个任务。 - 任务可以是任意组合的
taskA
和taskB
,但总数不能超过num
。
- 每次可以编排
-
计算总执行时长:
- 我们需要计算所有可能的任务组合的总执行时长。
- 例如,如果
num
为 3,则可能的组合有:- 3 个
taskA
- 2 个
taskA
和 1 个taskB
- 1 个
taskA
和 2 个taskB
- 3 个
taskB
- 3 个
-
输出要求:
- 输出所有可能的总执行