工厂流水线调度

一个工厂有m条流水线 来并行完成n个独立的作业。该工厂设置了一个调度系统

在安排作业时,总是优先执行处理时间最短的作业

现给定流水线个数m

需要完成的作业数n

每个作业的处理时间分别为 t1,t2...tn

请你编程计算处理完所有作业的耗时为多少

当n>m时 首先处理时间短的m个作业进入流水线

其他的等待

当某个作业完成时,

依次从剩余作业中取处理时间最短的进入处理

输入描述:

第一行为两个整数(采取空格分隔)

分别表示流水线个数m和作业数n

第二行输入n个整数(采取空格分隔)

表示每个作业的处理时长 t1,t2...tn

0<m,n<100

0<t1,t2...tn<100

输出描述

输出处理完所有作业的总时长

案例

输入

3 5

8 4 3 2 10

输出

13

说明

先安排时间为2,3,4的三个作业

第一条流水线先完成作业

调度剩余时间最短的作业8

第二条流水线完成作业

调度剩余时间最短的作业10

总共耗时 就是二条流水线完成作业时间13(3+10)

let N = 3
let arr = [1, 1, 1, 2, 3, 4, 6, 7, 8]
function test(){
    arr = arr.sort((a,b)=>a-b)
    let lineArr = arr.splice(0,N)
    let time = 0
    while (arr.length>0){
        let min = Math.min(...lineArr)
        time+=min
        lineArr = lineArr.map(i => i - min)
        for(let i =0;i<lineArr.length;i++){
            if(lineArr[i]<=0){
                let item = arr.shift()
                lineArr[i] = item
                if(arr.length===0){
                    time+=item
                }
            }
        }
    }
    console.log(time);
}
test()
机试题 文章被收录于专栏

某机试题,网上很少用js写的答案只有自己写了

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务