文章目录

  • 1. 题目
  • 2. 解题

1. 题目

我们有 n 栋楼,编号从 0 到 n - 1 。每栋楼有若干员工。由于现在是换楼的季节,部分员工想要换一栋楼居住。

给你一个数组 requests ,其中 requests[i] = [fromi, toi] ,表示一个员工请求从编号为 fromi 的楼搬到编号为 toi 的楼。

一开始 所有楼都是满的,所以从请求列表中选出的若干个请求是可行的需要满足 每栋楼员工净变化为 0
意思是每栋楼 离开 的员工数目 等于 该楼 搬入 的员工数数目。
比方说 n = 3 且两个员工要离开楼 0 ,一个员工要离开楼 1 ,一个员工要离开楼 2 ,如果该请求列表可行,应该要有两个员工搬入楼 0 ,一个员工搬入楼 1 ,一个员工搬入楼 2 。

请你从原请求列表中选出若干个请求,使得它们是一个可行的请求列表,并返回所有可行列表中最大请求数目

示例 1:

输入:n = 5, requests = [[0,1],[1,0],[0,1],[1,2],[2,0],[3,4]]
输出:5
解释:请求列表如下:
从楼 0 离开的员工为 x 和 y ,且他们都想要搬到楼 1 。
从楼 1 离开的员工为 a 和 b ,且他们分别想要搬到楼 2 和 0 。
从楼 2 离开的员工为 z ,且他想要搬到楼 0 。
从楼 3 离开的员工为 c ,且他想要搬到楼 4 。
没有员工从楼 4 离开。
我们可以让 x 和 b 交换他们的楼,以满足他们的请求。
我们可以让 y,a 和 z 三人在三栋楼间交换位置,满足他们的要求。
所以最多可以满足 5 个请求。

示例 2:

输入:n = 3, requests = [[0,0],[1,2],[2,1]]
输出:3
解释:请求列表如下:
从楼 0 离开的员工为 x ,且他想要回到原来的楼 0 。
从楼 1 离开的员工为 y ,且他想要搬到楼 2 。
从楼 2 离开的员工为 z ,且他想要搬到楼 1 。
我们可以满足所有的请求。示例 3:
输入:n = 4, requests = [[0,3],[3,1],[1,2],[2,0]]
输出:4提示:
1 <= n <= 20
1 <= requests.length <= 16
requests[i].length == 2
0 <= fromi, toi < n

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-number-of-achievable-transfer-requests
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

数据规模比较小,直接暴力回溯,时间复杂度 O(n∗2req.length)O(n*2^{req.length})O(n∗2req.length)

class Solution {int max_satisfied = 0;
public:int maximumRequests(int n, vector<vector<int>>& requests) {vector<int> count(n, 0);dfs(requests, count, 0, 0);return max_satisfied;}void dfs(vector<vector<int>>& requests, vector<int>& count, int idx, int satisfied){if(satisfied+requests.size()-idx <= max_satisfied)return;//剩余的假如都可以满足,都不可能超过最大的,剪枝if(idx == requests.size()){for(int i = 0; i < count.size(); i++){if(count[i] != 0)return;}max_satisfied = max(max_satisfied, satisfied);return;}int from = requests[idx][0], to = requests[idx][1];count[from]--;count[to]++;dfs(requests, count, idx+1, satisfied+1);//选count[from]++;count[to]--;dfs(requests, count, idx+1, satisfied);//当前不选}
};

48 ms 8.8 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1601. 最多可达成的换楼请求数目(回溯+剪枝)相关推荐

  1. LeetCode刷题日记2022-2-28/1601. 最多可达成的换楼请求数目-排列组合

    1601. 最多可达成的换楼请求数目 题目描述 题解思路 题解代码 itertools.combinations() 题目描述 我们有 n 栋楼,编号从 0 到 n - 1 .每栋楼有若干员工.由于现 ...

  2. java出代码1601_LeetCode 1601. 最多可达成的换楼请求数目

    题目描述 我们有 n 栋楼,编号从 0 到 n - 1 .每栋楼有若干员工.由于现在是换楼的季节,部分员工想要换一栋楼居住. 给你一个数组 requests ,其中 requests[i] = [fr ...

  3. 操作系统内存换入-请求调页---14

    操作系统内存换入-请求调页---14 引言 段.页同时存在 用户眼里的内存! 用换入.换出实现"大内存" 请求调页 一个实际系统的请求调页 处理中断page fault do_no ...

  4. LeetCode 698. 划分为k个相等的子集(回溯)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 示例 1: 输入: nums = [4, 3, ...

  5. 每日算法(四十三)-java为了更改的规划城市,需要统计楼栋数目信息。

    每日算法(四十三)-java为了更改的规划城市,需要统计楼栋数目信息. 为了更改的规划城市,需要统计楼栋数目信息. 方法如下,一张航拍照片会被分隔为N*M个小格子,每个格子可以用0跟1来表示.如果楼栋 ...

  6. LeetCode 1751. 最多可以参加的会议数目 II(DP + 二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个 events 数组,其中 events[i] = [startDayi, endDayi, valuei] ,表示第 i 个会议在 startD ...

  7. LeetCode 1520. 最多的不重叠子字符串(贪心)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个只包含小写字母的字符串 s ,你需要找到 s 中最多数目的非空子字符串,满足如下条件: 这些字符串之间互不重叠,也就是说对于任意两个子字符串 s[ ...

  8. LeetCode 1196. 最多可以买到的苹果数量(贪心)

    文章目录 1. 题目 2. 解题 1. 题目 楼下水果店正在促销,你打算买些苹果,arr[i] 表示第 i 个苹果的单位重量. 你有一个购物袋,最多可以装 5000 单位重量的东西,算一算,最多可以往 ...

  9. leetcode进行手机解绑与换绑

    leetcode不进行手机绑定就无法进行评论编写与题解编写. 而原手机已经在别的账号进行绑定. 方法: 通过手机号验证码的方式,登录相应账号 之后可点击注销账号,那么一个月后即可自动注销并释放手机号. ...

最新文章

  1. 循环神经网络(RNN)简介
  2. (转)angular进行md5加密 base64加密 哈希加密
  3. 在linux中教你通过NFS实现文件共享
  4. leetcode算法题--最低票价★
  5. 利用Maya进行论文中网格动画数据的渲染
  6. MD5 32位加密算法源码(测试通过)(系转载 飞扬天下)
  7. 美团王兴评价马云:“我仍然认为他有诚信问题”,大家怎么看?
  8. [Unity脚本运行时更新]C#7.2新特性
  9. cisco的telnet终端显示debug调试信息
  10. 树、图与二分图的转换
  11. 丹琦女神的对比学习新SOTA,在中文表现如何?我们补充实验后,惊了!
  12. 全球卡巴斯基升级服务器列表
  13. CentOS操作系统的22个log日志
  14. 微信小程序实现图片上传功能
  15. 如何使用USBASP烧写器和Atmel Studio 7.0对AVR微控制器进行编程
  16. 关于深度优先遍历和广度优先遍历的一些深入思考
  17. 【博客33】使用 “NVI“解决缺省参数绑定问题
  18. Nacos搭建集群以及遇到的问题
  19. seo优化教程-免费SEO优化详细教程
  20. 国外计算机专业用windows,最受欢迎的四款国外流行的Win7系统优化软件

热门文章

  1. 关于安装deepin+window10双系统有时没有声音的问题
  2. 【解决】jupyter在deepin安装上的坑
  3. 【Python】模拟面试技术面试题答
  4. 机器学习之朴素贝叶斯算法的推理及相关知识总结
  5. curl查看swift状态命令_HTTP 请求与响应包括哪些,如何用Chrome查看 HTTP 请求与响应内容和curl 命令的使用...
  6. 打印英文年历C语言函数,C语言打印年历
  7. java 不可修改的map_Java中如何实现不可变Map详解
  8. 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动
  9. Multidimensional Queries(二进制枚举+线段树+Educational Codeforces Round 56 (Rated for Div. 2))...
  10. AliasDB:简单统一灵活的数据库访问库(支持MSSQL/MySQL/SQLite/Oracle/ODBC/OleDb)适用于中小型系统...