1723. 完成所有工作的最短时间
原题链接: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. 完成所有工作的最短时间相关推荐
- 【LeetCode每日一题】1723. 完成所有工作的最短时间
[LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...
- [leetcode每日一题2021/5/8]1723. 完成所有工作的最短时间
1723. 完成所有工作的最短时间 题目 思路 动态规划 状态转移方程 优化 求和打表 快速枚举每种选取情况jjj的子集ppp 代码 算法复杂度 题目来源于leetcode,解法和思路仅代表个人观点. ...
- Leetcode-二分+递归/回溯-1723. 完成所有工作的最短时间
题目1723. 完成所有工作的最短时间: 题解: 递归回溯模板超时 按照模板+简单剪枝,超时 class Solution { private:vector<int> sum;int mi ...
- leetcode 1723.完成所有工作的最短时间 - 二分+递归
leetcode 1723.完成所有工作的最短时间 - 二分+递归 题干 给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间. 请你将这些工作分配给 k 位工人.所有 ...
- LeetCode每日一题: 1723. 完成所有工作的最短时间
1723. 完成所有工作的最短时间 题目 给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间. 请你将这些工作分配给 k 位工人.所有工作都应该分配给工人,且每项工作 ...
- (leetcode)1723. 完成所有工作的最短时间 -2021/5/8
文章目录 1723. 完成所有工作的最短时间 javascript 1723. 完成所有工作的最短时间 javascript 题目: 给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i ...
- LeetCode 1723 完成所有工作的最短时间 题解
LeetCode 1723 完成所有工作的最短时间 题解 给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间. 请你将这些工作分配给 k 位工人.所有工作都应该分配给 ...
- leetcode 1723. 完成所有工作的最短时间(二分+剪枝+回溯)
给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间. 请你将这些工作分配给 k 位工人.所有工作都应该分配给工人,且每项工作只能分配给一位工人.工人的 工作时间 是完 ...
- 【LeetCode/力扣】1723. 完成所有工作的最短时间
1 题目描述 题目链接:https://leetcode-cn.com/problems/find-minimum-time-to-finish-all-jobs/ 给你一个整数数组 jobs ,其中 ...
最新文章
- yii2 js css,JS、CSS的引用
- 洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
- CF622F-The Sum of the k-th Powers【拉格朗日插值】
- 如何进行有效的沟通----日常沟通及会议
- 精英赛上线|冠军万元奖金
- .Net中的事件处理模型
- algorithm头文件中的函数:remove()与remove_if() 函数,……
- 分析、归纳、综合、演绎
- 情人节看IT男如何告白,IT男的告白攻略
- 消息服务器待办事项数据库,关联联系信息的工作管理系统及其方法
- 帆软函数:阿拉伯数字转中文、阿拉伯数字转人民币大写
- 空指针异常NullPointerException(小结)
- uni-app获取当前位置并计算出某个地点距离
- OCR识别系列之一-----文档字符识别
- 微型计算机主板最新发展,三镇学子齐瞩目——精英主板 Intel915P平台新技术体验营首选武汉...
- 【ASP.NET Core】配置应用程序地址的N多种方法
- 如何将U盘改成“U-KEY”使用
- 变量——整型变量 浮点型变量 字符型变量
- 原力计划S5-精英季 活动协议
- tomcat	400错误跳转自定义页面