题目描述
任务编排服务负责对任务进行组合调度。
参与编排的任务有两种类型,其中一种执行时长为taskA,另一种执行时长为taskB。
任务一旦开始执行不能被打断,且任务可连续执行。
服务每次可以编排num个任务。
请编写一个方法,生成每次编排后的任务所有可能的总执行时长。
输入描述
第1行输入分别为第1种任务执行时长taskA,
第2种任务执行时长taskB,
这次要编排的任务个数num,以逗号分隔。
注:每种任务的数量都大于本次可以编排的任务数量
- 0 < taskA
- 0 < taskB
- 0 <= num <= 100000
输出描述
数组形式返回所有总执行时时长,需要按从小到大排列。
用例
输入 | 1,2,3 |
输出 | [3, 4, 5, 6] |
说明 | 无 |
题目解析
问题描述
任务编排服务负责对任务进行组合调度。参编排的任务有两种类型,其中一种执行时长为taskA,另一种执行时长为taskB。任务一旦开始执行不能被打断,且任务可连续执行。服务每次可以编排num个任务。请编写一个方法,生成每次编排后的任务所有可能的总执行时长。
输入描述
- 第一行输入分别为第1种任务执行时长taskA,第2种任务执行时长taskB,这次要编排的任务个数num,以逗号分隔。
- 0 < taskA
- 0 < taskB
- 0 <= num <= 100000
输出描述
数组形式返回所有总执行时长,需按从小到大排列。
示例
输入:
5 3 4
输出:
[12, 14, 16, 18, 20]
解题思路
- 任务组合的总执行时长:任务的组合可以看成是一个从0到num的组合,其中x是执行taskA的任务数量,num-x是执行taskB的任务数量。
- 计算所有组合的总执行时长:根据上述组合计算所有可能的总执行时长,并按从小到大排列。
C++代码实现
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int taskA, taskB, num;
char comma;
cin >> taskA >> comma >> taskB >> comma >> num;
vector<int> results;
for (int i = 0; i <= num; ++i) {
int total_time = i * taskA + (num - i) * taskB;
results.push_back(total_time);
}
sort(results.begin(), results.end());
cout << "[";
for (size_t i = 0; i < results.size(); ++i) {
cout << results[i];
if (i < results.size() - 1) {
cout << ", ";
}
}
cout << "]" << endl;
return 0;
}
代码说明
- 读取输入:读取输入的任务执行时长taskA、taskB和任务数量num。
- 计算所有可能的总执行时长:遍历从0到num的所有组合,计算总执行时长并存储在结果数组中。
- 排序和输出:对结果数组进行排序,并按要求格式输出。
这个程序能够生成所有可能的总执行时长,并按从小到大排列输出。
python代码实现
def task_durations(taskA, taskB, num):
results = []
for i in range(num + 1):
total_time = i * taskA + (num - i) * taskB
results.append(total_time)
results.sort()
return results
# 读取输入
taskA, taskB, num = map(int, input().split())
# 计算并输出结果
results = task_durations(taskA, taskB, num)
print(results)
代码说明
- task_durations函数:计算所有可能的总执行时长,遍历从0到num的所有组合,计算总执行时长并存储在结果列表中。然后对结果列表进行排序。
- 读取输入:通过
input().split()
读取输入数据并进行处理。 - 计算并输出结果:调用
task_durations
函数计算结果,并输出结果。
这个Python程序能够生成所有可能的总执行时长,并按从小到大排列输出。你可以在Python环境中运行这个程序来实现该功能。