LeetCode1066_校园自行车分配II_动态规划_位运算_Java
B站视频地址:https://www.bilibili.com/video/BV18G4y1a7d9/?vd_source=a0bea6f5def58dc5711647a825ed97b6
代码
class Solution {int[][] workers;int[][] bikes;public int assignBikes(int[][] workers, int[][] bikes) {int n = bikes.length;this.workers = workers;this.bikes = bikes;// 当前没有被分配的自行车可以得到的曼哈顿距离最小值数组int[] dp = new int[1 << n];// 第二个参数是二进制n个0,// eg:n = 4 0000return dfs(0, 0, dp);}/**** @param workerIndex, 还没有自行车的工人,也是递归的结束条件,所有的工人都有自行车之后,递归终止* @param state 表示自行车的状态,虽为十进制的值,但转为2进制更好理解* @param dp 当前没有被分配的自行车可以得到的曼哈顿距离最小值数组* @return 当前没有被分配的自行车可以得到的曼哈顿距离最小值*/public int dfs(int workerIndex, int state, int[] dp) {if (workerIndex == workers.length) {return 0;}if (dp[state] != 0) {return dp[state];}int min = Integer.MAX_VALUE;for (int i = 0; i < bikes.length; i++) {// 表示第i辆自行车没有被使用// 二进制数字上第i位为0if ((state & (1 << i)) == 0) {min = Math.min(min, distance(workerIndex, i) + dfs(workerIndex + 1, state | (1 << i), dp));}}dp[state] = min;return min;}public int distance(int workerIndex, int bikeIndex) {return Math.abs(workers[workerIndex][0] - bikes[bikeIndex][0]) + Math.abs(workers[workerIndex][1] - bikes[bikeIndex][1]);}
}
LeetCode1066_校园自行车分配II_动态规划_位运算_Java相关推荐
- leetcode1066 校园自行车分配II
leetcode1066 校园自行车分配II 题目描述 在由 2D 网格表示的校园里有 n 位工人(worker)和 m 辆自行车(bike),n <= m.所有工人和自行车的位置都用网格上的 ...
- c语言用位运算将一个数清零,C语言学习笔记_位运算
C语言学习笔记_位运算 知识点记录 基本位运算 按位与:全1为1,见0为0:与1相与无变化,与0相与变为0:可用于特定位清零 按位或:见1为1,全0为0:与1相或变为1,与0相或无变化:可用于特定位置 ...
- LeetCode 1057. 校园自行车分配(map有序+贪心)
文章目录 1. 题目 2. 解题 1. 题目 在由 2D 网格表示的校园里有 n 位工人(worker)和 m 辆自行车(bike),n <= m.所有工人和自行车的位置都用网格上的 2D 坐标 ...
- LeetCode #1349. 参加考试的最大学生数 - 学到了:压缩状态动态规划、位运算、reduce()、str().count()
赛题见:https://leetcode-cn.com/problems/maximum-students-taking-exam/ 我的解法是用递归实现广度优先搜索,结果是对的,但是太慢,超时了.这 ...
- python isodd()判断奇偶_位运算(1的个数;2.判断奇偶)
1. 1的个数 int NumberOf1(intn){int count = 0;while(n) {++count; n=(n-1)&n; } } 同样一个问题,位运算可以提高程序的运行效 ...
- python写整数逆位运算_位运算
a = 60 # 0011 1100 b = 13 # 0000 1101 运算符 描述 示例 & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 a& ...
- HDU2553_N皇后_位运算DFS
题目大意:N皇后 解题思路:用位运算dfs. 代码: #include using namespace std;int tal,sum; int n;void dfs(int row,int ld,i ...
- java 模拟 减法 进位_位运算实现加减乘除四则运算(Java)
[本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 本文是继< ...
- 位运算判断奇偶数_位运算判断奇偶数
第一条:利用位运算判断一个整数是奇数还是偶数. 经常用到一个for循环,当索引i是奇数时执行语句A,偶数时执行语句B.判断i是奇数还是偶数,可用如下方法: if(i &1){ //i是奇数情况 ...
最新文章
- android查找邮件程序,Android 程序崩溃日志邮件获取
- FPGA 内部双口块RAM 读写实现
- 为Linux用ISO制作U盘启动及基本原理
- android 标题图标,android 中 actionbar 常用方法。设置标题,隐藏图标等
- android 格式化代码
- hMailServer C#API
- AtomicIntegerArray和AtomicIntegerFieldUpdater
- C#编写不安全代码初探
- [COURSE_PTHE] 18. 缓冲区溢出
- python工作区是什么_在IPython中保存工作区
- JAVA解决实例问题_解决java方法
- UltraEdit 所有快捷键 说明
- VS 中PageLayout 属性设置
- 阅读--2020-7-19 CCFC2019 使用向量自回归和堆积LSTM模型进行多变量工作量预测
- c语言实现sdcch信道编码译码,gsm信道编码办法及分类
- 软件测试培训到底值不值得参加?
- 基于M0 MCU的无感FOC航模电机控制
- C#读取网卡地址的几种方法
- Java,图片在table中显示并缩放2.0
- word2013图表题注:将图一-1改为图1-1
热门文章
- 一个完整的数据分析案例 | 用Python完成用户预测分析
- 基于深度学习的多聚焦图像融合(Multi-Focus Image Fusion)论文及代码整理
- node.js220604_day03
- Https数字证书交换过程介绍
- JVM MarkWord与Lock Record 锁
- Python实现数字推盘游戏重排九宫8-puzzle
- 在Excel表格中如何使用分类汇总
- Semantic Foggy Scene Understanding with Synthetic Data
- 常用的人工智能数据集简介
- 地图SDK中com.amap.api.location.APSService报红