【华为机试】2023年真题B卷(python)-任务总执行时长
2024-01-10 11:30:37
一、题目
题目描述:
任务编排服务负责对任务进行组合调度。参与编排的任务有两种类型,其中一种执行时长为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。以此类推,得到最终结果.
五、解题思路
- 首先,需要确定每次编排后的任务组合方式,即确定每次选择的任务A和任务B的数量。
- 我们可以使用两个循环来遍历所有可能的任务组合方式:
- 外层循环遍历任务A的数量,从0到num(包含num)。
- 内层循环根据外层循环的值计算任务B的数量,即num减去外层循环的值。
- 在每次循环中,计算当前任务组合方式的总执行时长,并将结果存储到一个列表中。
- 最后,对结果列表进行排序,并返回结果。
六、参考代码?
# -*- 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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!