工厂流水线调度

一个工厂有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写的答案只有自己写了

全部评论

相关推荐

10-29 16:42
门头沟学院 Java
1.今天什么国标的公司打电话约面试,还得准备ppt,好麻烦,网上查薪资一般,打算拒了,不面了2.字节又复活了,什么安全开发,也不知道怎么样,面一面试试吧,还是挺想去字节的,但好难,随缘吧所以今天没面试
嵌入式的小白:面试前可以好好准备下 1.看看你投递的岗位的岗位描述,分析下是哪个业务线,同使要罗列他们描述中提到的技术点 2.根据1中的两点准备 3.岗位描述中应该还有语言要求,这个刷刷八股,要是对自己语言能力很有把握,那就不用看这点了 4.找下你简历中项目部分,看有没有和岗位描述中技术点重合的,这种在面试提到项目时,是高概率问题 好好准备,祝你面试顺利
我的求职进度条
点赞 评论 收藏
分享
牛牛不会牛泪:脉脉太多这种了,纯水军
点赞 评论 收藏
分享
牛油果甜奶昔:别的先不说,牛客还能内推护士?
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

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