sss404NotFound 2022-12-13 22:48 采纳率: 100%
浏览 190
已结题

蓄水池并发注水问题-算法题(java/c++)

当前有n个水池(n无大小限制,此处0<n<10^5)可同时蓄水,蓄满第i个水池所需要的时间为time[i],蓄第i个水池所需要的工人数为costs[i],(水池一旦开始蓄水就不能停下,且对水池蓄水必须满足人数要求,time.length = costs.length),当前有x个员工在待命(单个水池需要的人数不会超过x),求在满足人数要求的情况下完成全部蓄水任务的最短时间。

输入:
time = [2,4,10]
costs = [2,5,7]
x=7
输出:14

img

  • 写回答

6条回答 默认 最新

  • 天天爱摸鱼 2022-12-18 14:14
    关注
    
        public static int minTime(int[] time,int[] costs,int x){
            int temp,times=0,tmp_x=x;
            if(time.length==0 || costs.length==0){
                return times;
            }
    //        按时间排序
            for(int i=1;i<time.length;i++){
                for(int j=0;j<time.length-i;j++){
                    if(time[j]<time[j+1]){
                        temp=time[j];
                        time[j]=time[j+1];
                        time[j+1]=temp;
                        temp=costs[j];
                        costs[j]=costs[j+1];
                        costs[j+1]=temp;
                    }
                }
            }
    //        复制一个临时数组,用于删除使用过的元素
            int[] tmp_time=(int[]) Arrays.copyOf(time,time.length);
            int[] tmp_costs=(int[]) Arrays.copyOf(costs,costs.length);
            int len=tmp_costs.length;
            
    //        开始获取时间
            for(int i=0;i<costs.length;i++){
    //            判断人数是否满足条件
                if(tmp_x>=costs[i]){
    //                每一次统计只取同时进行所花最大时间
                    if(times<time[i]){
                        times=time[i];
                    }
                    tmp_x-=costs[i];
    //                删除使用过的元素
                    for(int k=i;k<len-1;k++){
                        tmp_costs[k]=tmp_costs[k+1];
                        tmp_time[k]=tmp_time[k+1];
                    }
                    tmp_costs[len-1]='\0';
                    tmp_time[len-1]='\0';
                    len--;
                }
                if(tmp_x==0){ break; }
    
            }
            return times+minTime((int[]) Arrays.copyOf(tmp_time,len),(int[]) Arrays.copyOf(tmp_costs,len),x);
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 12月28日
  • 已采纳回答 12月20日
  • 赞助了问题酬金15元 12月15日
  • 创建了问题 12月13日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!