0
点赞
收藏
分享

微信扫一扫

Linux及其常用命令

李雨喵 2023-05-28 阅读 55

请添加图片描述

✅创作者:陈书予
🎉个人主页:陈书予的个人主页
🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区
🌟专栏地址: Java华为OD机试真题(2022&2023)

文章目录

1. 题目描述

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

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

任务一旦开始执行不能被打断,且任务可连续执行。服务每次可以编排num个任务。请编写一个方法,生成每次编排后的任务所有可能的总执行时长。

2. 输入描述

第1行输入分别为第1种任务执行时长taskA,第2种任务执行时长taskB,这次要编排的任务个数num,以逗号分隔。

3. 输出描述

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

补充说明:
每种任务的数量都大于本次可以编排的任务数量:

0 < taskA
0 < taskB
0 <= num <= 100000

4. Java算法源码

/**
 * 任务总执行时长
 */
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String line = sc.nextLine();
    String[] split = line.split(",");

    int taskA = Integer.parseInt(split[0]);
    int taskB = Integer.parseInt(split[1]);

    int num = Integer.parseInt(split[2]);

    Set<Integer> set = new TreeSet<>();
    for (int i = 0; i <= num; i++) {
        int val = taskA * i + taskB * (num - i);
        set.add(val);
    }
    System.out.println(set);
}


5. 测试

在这里插入图片描述

6.解题思路

在这里插入图片描述

  1. 首先读取输入的任务执行时长 taskAtaskB 和要编排的任务个数 num
  2. 使用逗号分隔输入的任务执行时长,将其存储在数组 split 中。
  3. 将任务执行时长转换为整数类型,并分别赋值给变量 taskAtaskBnum
  4. 使用 TreeSet 来存储所有可能的总执行时长,以便自动按从小到大的顺序排序。
  5. 使用循环从 0 到 num,依次计算每种任务数量的组合情况,并计算总执行时长:
    • 假设任务 A 的数量为 i,则任务 B 的数量为 num - i
    • 总执行时长为 taskA * i + taskB * (num - i)
    • 将总执行时长添加到 set 中。
  6. 输出 set,即为按从小到大排列的所有总执行时

在这里插入图片描述

举报

相关推荐

Git 常用命令及其作用

【Linux常用命令】

linux常用命令:

LINUX常用命令

Linux 常用命令

linux常用命令

【linux 常用命令】

Linux常用命令

LINUX 常用命令

0 条评论