【华为OD机试】任务总执行时长

题目描述

任务编排服务负责对任务进行组合调度。

参与编排的任务有两种类型,其中一种执行时长为taskA,另一种执行时长为taskB。

任务一旦开始执行不能被打断,且任务可连续执行。

服务每次可以编排num个任务。

请编写一个方法,生成每次编排后的任务所有可能的总执行时长。

输入描述

第1行输入分别为

第1种任务执行时长taskA

第2种任务执行时长taskB

这次要编排的任务个数num

以逗号分隔。

输出描述

数组形式返回所有总执行时时长,需要按从小到大排列。

备注

注:每种任务的数量都大于本次可以编排的任务数量

0 < taskA

0 < taskB

0 <= num <= 100000

测试样例1

输入:

1,2,3

<

### 配置华为OD任务执行时长 为了实现给定的任务编排并计算所有可能的执行时长,可以通过编程方式来解决这个问题。具体来说,算法的核心在于遍历所有可能的任务组合,并记录每种组合下的执行时间。 #### 方法概述 定义两个不同类型的任务及其各自的执行时长 `taskA` 和 `taskB` 。当需要安排数为 `num` 的任务时,程序应考虑所有的可能性——即从全部都是 `taskA` 到全部都是 `taskB` ,以及两者之间的各种混合比例。对于每一个特定的比例(比如有 i 个 `taskB` ,那么就有 (num - i) 个 `taskA`),都会有一个唯一的执行时长。这些不同的执行时长会被收集起来,最终返回一个不重复且已排序的结果列表[^3]。 #### 解决方案示例代码(Python) 下面是一个简单的 Python 函数实现了上述逻辑: ```python def calculate_possible_durations(taskA, taskB, num): durations = set() # 使用集合存储唯一的时间长度 for i in range(num + 1): duration = i * taskB + (num - i) * taskA durations.add(duration) return sorted(list(durations)) # 输入样例解析 input_data = "2,3,6" params = input_data.split(',') taskA = int(params[0]) taskB = int(params[1]) num = int(params[2]) result = calculate_possible_durations(taskA, taskB, num) print(result) ``` 这段代码首先初始化了一个空集合作为容器用于保存各个可能的执行时长;接着利用循环迭代所有合理的 `i` 值(表示有多少个 `taskB`),并通过公式 `(i*taskB+(num-i)*taskA)` 计算对应于该分配方案下的执行时长,并存入集合中以确保数据的独特性;最后将集合转换成列表形式并对之进行升序排列后输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值