原题链接:1723. 完成所有工作的最短时间

solution:
        dfs + 回溯 + 剪枝

①结束条件:任务分配完成,maxt保存所有工人的最大工作时长,再用maxt和以前的最大工作时长res进行比较,更新res。
②分配时间,深度优先搜索,先把所有任务优先分配给第一个人,回溯以后再往下一个人进行分配。
③剪枝条件1:如果当前分配的工人时长大于以前分配结束的最大工人时长,进行剪枝
④剪枝条件2:如果回溯后,工人工作时间workers[i] == 0,进行剪枝,因为该工人后面的工作时间全是0,没有意义。

class Solution {
public:int res = INT_MAX;int minimumTimeRequired(vector<int>& jobs, int k) {vector<int> workers (k, 0);   //定义每个工人的工作时长dfs(workers, jobs, 0);return res;}void dfs(vector<int> &workers,vector<int>& jobs,int index) {if(index == jobs.size()) {  //如果所有任务分配完毕,更新一次resint maxt = -1;for(int i = 0;i < workers.size();i++) { //任务分配完毕,保存最大工作时间maxt = max(maxt, workers[i]);}res = min(res, maxt);   //更新最小的最大工作时间return;}for(int i = 0;i < workers.size();i++) {  //分配时间if(workers[i] + jobs[index] >= res) {   //如果此次分配大于以前的最小的最大工作时间,剪枝continue;}workers[i] += jobs[index];dfs(workers,jobs,index + 1);workers[i] -= jobs[index];  //回溯if(workers[i] == 0) break;  //剪枝}}
};

1723. 完成所有工作的最短时间相关推荐

  1. 【LeetCode每日一题】1723. 完成所有工作的最短时间

    [LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...

  2. [leetcode每日一题2021/5/8]1723. 完成所有工作的最短时间

    1723. 完成所有工作的最短时间 题目 思路 动态规划 状态转移方程 优化 求和打表 快速枚举每种选取情况jjj的子集ppp 代码 算法复杂度 题目来源于leetcode,解法和思路仅代表个人观点. ...

  3. Leetcode-二分+递归/回溯-1723. 完成所有工作的最短时间

    题目1723. 完成所有工作的最短时间: 题解: 递归回溯模板超时 按照模板+简单剪枝,超时 class Solution { private:vector<int> sum;int mi ...

  4. leetcode 1723.完成所有工作的最短时间 - 二分+递归

    leetcode 1723.完成所有工作的最短时间 - 二分+递归 题干 给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间. 请你将这些工作分配给 k 位工人.所有 ...

  5. LeetCode每日一题: 1723. 完成所有工作的最短时间

    1723. 完成所有工作的最短时间 题目 给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间. 请你将这些工作分配给 k 位工人.所有工作都应该分配给工人,且每项工作 ...

  6. (leetcode)1723. 完成所有工作的最短时间 -2021/5/8

    文章目录 1723. 完成所有工作的最短时间 javascript 1723. 完成所有工作的最短时间 javascript 题目: 给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i ...

  7. LeetCode 1723 完成所有工作的最短时间 题解

    LeetCode 1723 完成所有工作的最短时间 题解 给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间. 请你将这些工作分配给 k 位工人.所有工作都应该分配给 ...

  8. leetcode 1723. 完成所有工作的最短时间(二分+剪枝+回溯)

    给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间. 请你将这些工作分配给 k 位工人.所有工作都应该分配给工人,且每项工作只能分配给一位工人.工人的 工作时间 是完 ...

  9. 【LeetCode/力扣】1723. 完成所有工作的最短时间

    1 题目描述 题目链接:https://leetcode-cn.com/problems/find-minimum-time-to-finish-all-jobs/ 给你一个整数数组 jobs ,其中 ...

最新文章

  1. yii2 js css,JS、CSS的引用
  2. 洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
  3. CF622F-The Sum of the k-th Powers【拉格朗日插值】
  4. 如何进行有效的沟通----日常沟通及会议
  5. 精英赛上线|冠军万元奖金
  6. .Net中的事件处理模型
  7. algorithm头文件中的函数:remove()与remove_if() 函数,……
  8. 分析、归纳、综合、演绎
  9. 情人节看IT男如何告白,IT男的告白攻略
  10. 消息服务器待办事项数据库,关联联系信息的工作管理系统及其方法
  11. 帆软函数:阿拉伯数字转中文、阿拉伯数字转人民币大写
  12. 空指针异常NullPointerException(小结)
  13. uni-app获取当前位置并计算出某个地点距离
  14. OCR识别系列之一-----文档字符识别
  15. 微型计算机主板最新发展,三镇学子齐瞩目——精英主板 Intel915P平台新技术体验营首选武汉...
  16. 【ASP.NET Core】配置应用程序地址的N多种方法
  17. 如何将U盘改成“U-KEY”使用
  18. 变量——整型变量 浮点型变量 字符型变量
  19. 原力计划S5-精英季 活动协议
  20. tomcat 400错误跳转自定义页面

热门文章

  1. Js勾选同意协议教程-更新篇
  2. Python 实现发送QQ邮件(可加附件)
  3. 批处理创建隐秘的加密文件夹,是男人就把秘密藏起来
  4. 阿里云ECS服务器常用入门配置命令
  5. 火车票能不能选座_12306可以选座位吗 12306怎么选座位方法介绍
  6. 邮件撤回怎么操作?个人邮箱Outlook登录入口在哪?
  7. 编译winmerge源代码
  8. csgo为什么显示vac无法连接服务器,csgovac无法验证您的游戏会话怎么办 看完你就知道了...
  9. 计算机的英语歌,好听的英文歌,该怎么解决
  10. 旅行comf HYSBZ - 1050