【华为机试】2023年真题B卷(python)-任务总执行时长

发布时间:2024年01月10日

一、题目

题目描述:

任务编排服务负责对任务进行组合调度。参与编排的任务有两种类型,其中一种执行时长为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和 次 taskB,得到结果 4。以此类推,得到最终结果.

五、解题思路

  1. 首先,需要确定每次编排后的任务组合方式,即确定每次选择的任务A和任务B的数量。
  2. 我们可以使用两个循环来遍历所有可能的任务组合方式:
    • 外层循环遍历任务A的数量,从0到num(包含num)。
    • 内层循环根据外层循环的值计算任务B的数量,即num减去外层循环的值。
  3. 在每次循环中,计算当前任务组合方式的总执行时长,并将结果存储到一个列表中。
  4. 最后,对结果列表进行排序,并返回结果。

六、参考代码?

# -*- coding: utf-8 -*-
'''
@File    :   2023-B-任务总执行时长.py
@Time    :   2024/01/07 13:35:02
@Author  :   mgc 
@Version :   1.0
@Desc    :   None
'''

def generate_task_duration(taskA, taskB, num):
    durations = []  # 存储总执行时长的列表

    # 遍历任务A的数量
    for countA in range(num + 1):
        countB = num - countA  # 计算任务B的数量

        # 计算当前任务组合方式的总执行时长
        duration = countA * taskA + countB * taskB
        durations.append(duration)

    durations.sort()  # 对结果列表进行排序
    return durations

input_str = input()
taskA, taskB, num = map(int, input_str.split(","))
result = generate_task_duration(taskA, taskB, num)
print(result)  # 输出: [3, 4, 5, 6]
文章来源:https://blog.csdn.net/u014481728/article/details/135438879
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。