m0_60462130 2021-09-22 23:30 采纳率: 100%
浏览 229
已结题

m个线程,n个任务,求最短解决时间

今天遇到一个题:假设有m个线程,同时解决n个任务,求最短解决时间。

输入示例:3 (3个线程)
1 4 2 3 5 (各个任务的解决时间)
输出示例:5 (全部任务最短解决时间)

求解决一下给个代码,最好是java的,感谢感谢了

  • 写回答

2条回答 默认 最新

  • 走一步-再走一步 2021-09-23 17:41
    关注
    
     public static void main(String[] args) {
    //        Scanner scanner = new Scanner(System.in);
            int[] arrs = {1,2,3,4,5};
            Arrays.sort(arrs);
            int n= arrs.length;
            int m = 3;
            int sum = Arrays.stream(arrs).sum();
            int ave = sum%m == 0? sum/m:sum/m + 1 ;
            Map<Integer,List<Integer>> map = new HashMap<>();
            Map<Integer,Integer> sumMap = new HashMap<>();
            int step = 1;
            int j=0;
            for (int i=arrs.length-1;i>=0;){
    
    
    
                Integer preSum = sumMap.getOrDefault(j, 0);
                if (preSum == 0 || preSum+arrs[i]<= ave){
                    List<Integer> list = map.getOrDefault(j, new ArrayList<>());
                    list.add(arrs[i]);
                    map.put(j,list);
                    sumMap.put(j,preSum+arrs[i]);
                    i--;
                }
    
                j=j+step;
    
                if(j>= m-1){
                    step = -1;
                }
                if (j<= 0){
                    step = 1;
    
                }
    
            }
    
            System.out.println(map);
            System.out.println(sumMap);
            System.out.println("耗时:"+ sumMap.values().stream().max(Integer::compareTo).get());
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月1日
  • 已采纳回答 9月23日
  • 创建了问题 9月22日

悬赏问题

  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应