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相关推荐

  1. leetcode1066 校园自行车分配II

    leetcode1066 校园自行车分配II 题目描述 在由 2D 网格表示的校园里有 n 位工人(worker)和 m 辆自行车(bike),n <= m.所有工人和自行车的位置都用网格上的 ...

  2. c语言用位运算将一个数清零,C语言学习笔记_位运算

    C语言学习笔记_位运算 知识点记录 基本位运算 按位与:全1为1,见0为0:与1相与无变化,与0相与变为0:可用于特定位清零 按位或:见1为1,全0为0:与1相或变为1,与0相或无变化:可用于特定位置 ...

  3. LeetCode 1057. 校园自行车分配(map有序+贪心)

    文章目录 1. 题目 2. 解题 1. 题目 在由 2D 网格表示的校园里有 n 位工人(worker)和 m 辆自行车(bike),n <= m.所有工人和自行车的位置都用网格上的 2D 坐标 ...

  4. LeetCode #1349. 参加考试的最大学生数 - 学到了:压缩状态动态规划、位运算、reduce()、str().count()

    赛题见:https://leetcode-cn.com/problems/maximum-students-taking-exam/ 我的解法是用递归实现广度优先搜索,结果是对的,但是太慢,超时了.这 ...

  5. python isodd()判断奇偶_位运算(1的个数;2.判断奇偶)

    1. 1的个数 int NumberOf1(intn){int count = 0;while(n) {++count; n=(n-1)&n; } } 同样一个问题,位运算可以提高程序的运行效 ...

  6. python写整数逆位运算_位运算

    a = 60 # 0011 1100 b = 13 # 0000 1101 运算符 描述 示例 & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 a& ...

  7. HDU2553_N皇后_位运算DFS

    题目大意:N皇后 解题思路:用位运算dfs. 代码: #include using namespace std;int tal,sum; int n;void dfs(int row,int ld,i ...

  8. java 模拟 减法 进位_位运算实现加减乘除四则运算(Java)

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 本文是继< ...

  9. 位运算判断奇偶数_位运算判断奇偶数

    第一条:利用位运算判断一个整数是奇数还是偶数. 经常用到一个for循环,当索引i是奇数时执行语句A,偶数时执行语句B.判断i是奇数还是偶数,可用如下方法: if(i &1){ //i是奇数情况 ...

最新文章

  1. android查找邮件程序,Android 程序崩溃日志邮件获取
  2. FPGA 内部双口块RAM 读写实现
  3. 为Linux用ISO制作U盘启动及基本原理
  4. android 标题图标,android 中 actionbar 常用方法。设置标题,隐藏图标等
  5. android 格式化代码
  6. hMailServer C#API
  7. AtomicIntegerArray和AtomicIntegerFieldUpdater
  8. C#编写不安全代码初探
  9. [COURSE_PTHE] 18. 缓冲区溢出
  10. python工作区是什么_在IPython中保存工作区
  11. JAVA解决实例问题_解决java方法
  12. UltraEdit 所有快捷键 说明
  13. VS 中PageLayout 属性设置
  14. 阅读--2020-7-19 CCFC2019 使用向量自回归和堆积LSTM模型进行多变量工作量预测
  15. c语言实现sdcch信道编码译码,gsm信道编码办法及分类
  16. 软件测试培训到底值不值得参加?
  17. 基于M0 MCU的无感FOC航模电机控制
  18. C#读取网卡地址的几种方法
  19. Java,图片在table中显示并缩放2.0
  20. word2013图表题注:将图一-1改为图1-1

热门文章

  1. 一个完整的数据分析案例 | 用Python完成用户预测分析
  2. 基于深度学习的多聚焦图像融合(Multi-Focus Image Fusion)论文及代码整理
  3. node.js220604_day03
  4. Https数字证书交换过程介绍
  5. JVM MarkWord与Lock Record 锁
  6. Python实现数字推盘游戏重排九宫8-puzzle
  7. 在Excel表格中如何使用分类汇总
  8. Semantic Foggy Scene Understanding with Synthetic Data
  9. 常用的人工智能数据集简介
  10. 地图SDK中com.amap.api.location.APSService报红