Johnson算法 流水线问题 java实现

某印刷厂有 6项加工任务J1,J2,J3,J4,J5,J6,需要在两台机器Mi和M2上完

成。

在机器Mi上各任务所需时间为5,1,8,5,3,4单位;

在机器M2上各任务所需时间为7,2,2,4,7,4单位。

即时间矩阵为:

T1 = {5, 1, 8, 5, 3 ,4}

T2 = {7, 2, 2, 4, 7, 4}

请解决以下问题:

1.给出任务的最优加工顺序,使得总加工时间最短;

2.计算加工完成所有任务的最短总时间;

算法流程:

  1. 把ai<=bi 的放在数组list1,把ai>bi放在数组list2中

  2. 把list1进行从小到大排序,list2从大到小排序

  3. 把list1和list2进行合并,list1在前list2在后,这个顺序即为加工的顺序

java 复制代码
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] A = new int[n];
        for (int i = 0; i < n; i++) {
            A[i] = sc.nextInt();
        }
        int[] B = new int[n];
        for (int i = 0; i < n; i++) {
            B[i] = sc.nextInt();
        }

        List<int[]> list1 = new ArrayList<>();
        List<int[]> list2 = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            if (A[i] <= B[i]) {
                list1.add(new int[]{A[i], B[i]});
            } else {
                list2.add(new int[]{A[i], B[i]});
            }
        }
        list1.sort((o1, o2) -> o1[0] - o2[0]);
        list2.sort((o1, o2) -> o2[1] - o1[1]);
        List<int[]> list = new ArrayList<>();
        list.addAll(list1);
        list.addAll(list2);
        int AA = 0;
        int BB = 0;
        for(int[] arrs : list){
            AA+=arrs[0];
            BB = Math.max(AA,BB) + arrs[1];
        }
        System.out.println(Math.max(AA,BB));

    }

list中即为最优的顺序

最终输出结果为最短时间

相关推荐
Kidddddult1 小时前
力扣刷题Day 37:LRU 缓存(146)
算法·leetcode·力扣
电商数据girl1 小时前
【Python爬虫电商数据采集+数据分析】采集电商平台数据信息,并做可视化演示
java·开发语言·数据库·爬虫·python·数据分析
夏季疯1 小时前
学习笔记:黑马程序员JavaWeb开发教程(2025.3.30)
java·笔记·学习
LUCIAZZZ1 小时前
简单介绍分布式定时任务XXL-JOB
java·spring boot·分布式·spring·操作系统·定时任务
生信碱移1 小时前
TCGA数据库临床亚型可用!贝叶斯聚类+特征网络分析,这篇 NC 提供的方法可以快速用起来了!
人工智能·python·算法·数据挖掘·数据分析
bing_1581 小时前
Spring MVC Controller 方法的返回类型有哪些?
java·spring·mvc
奔驰的小野码2 小时前
SpringAI实现AI应用-内置顾问
java·人工智能·后端·spring
普通人zzz~2 小时前
SpringBoot记录用户操作日志
java·spring boot·后端
大三开学菜鸟2 小时前
记录一下spring-cloud-starter-alibaba-nacos-config 2023.0.3.2与springboot版本及配置问题
java·spring boot·后端·spring·intellij-idea
wang__123002 小时前
力扣1812题解
算法·leetcode·职场和发展