题目描述:
任务编排服务负责对任务进行组合调度。参与编排的任务有两种类型,其中一种执行时长为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]