29.工廠流水線最短時間優先調度算法問題


一個工廠有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)

3 9
1 1 1 2 3 4 6 7 8
13

 

查看代碼

import java.util.*;

public class Demo29 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String[] split = sc.nextLine().split(" ");
        int m = Integer.parseInt(split[0]);
        int n = Integer.parseInt(split[1]);

        String[] times = sc.nextLine().split(" ");
        int[] ints = new int[n];
        for(int i = 0; i < n; i++){
            ints[i] = Integer.parseInt(times[i]);
        }
        Arrays.sort(ints);

        int[] res = new int[m];
        for(int i = 0; i < n; i++){
            res[i % m] += ints[i];
        }
        Arrays.sort(res);
        System.out.println(res[m - 1]);
    }
}

總結:兩種語言表達方式的轉換,慢慢積累,加油。

          按照人的常規思維處理,在計算機看來是沒必要的,重要的是思維方式的轉換。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM