文章目录

  • 1. 题目
  • 2. 解题

1. 题目

一个坐标可以从 -infinity 延伸到 +infinity 的 无限大的 棋盘上,你的 骑士 驻扎在坐标为 [0, 0] 的方格里。

骑士的走法和中国象棋中的马相似,走 “日” 字:即先向左(或右)走 1 格,再向上(或下)走 2 格;或先向左(或右)走 2 格,再向上(或下)走 1 格。

每次移动,他都可以按图示八个方向之一前进。

现在,骑士需要前去征服坐标为 [x, y] 的部落,请你为他规划路线。

最后返回所需的最小移动次数即可。本题确保答案是一定存在的。

示例 1:
输入:x = 2, y = 1
输出:1
解释:[0, 0] → [2, 1]示例 2:
输入:x = 5, y = 5
输出:4
解释:[0, 0] → [2, 1] → [4, 2] → [3, 4] → [5, 5]提示:
|x| + |y| <= 300

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

2. 解题

class Solution {public:int minKnightMoves(int x, int y) {vector<vector<int>> dir = {{2, 1},{2,-1},{-2,1},{-2,-1},{1,2},{1,-2},{-1,2},{-1,-2}};x = abs(x), y = abs(y);//对称的,变成正的int m = x+20, n = y+20;//放大一点vector<vector<bool>> visited(m, vector<bool>(n,false));x += 10, y += 10;//偏移10个单位,保证边界的上情况能够覆盖queue<vector<int>> q;q.push({10,10});//起点visited[10][10] = true;int step = 0, size, i, j, k, ni, nj;while(!q.empty()){size = q.size();while(size--){i = q.front()[0];j = q.front()[1];if(i==x && j==y)return step;q.pop();for(k = 0; k < 8; k++){ni = i + dir[k][0];nj = j + dir[k][1];if(ni>=0 && ni<m && nj>=0 && nj<n && !visited[ni][nj]){q.push({ni,nj});visited[ni][nj] = true;}}}step++;}return -1;}
};

296 ms 34.4 MB


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

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

LeetCode 1197. 进击的骑士(BFS)相关推荐

  1. Leetcode 1197:进击的骑士(超详细的解法!!!)

    一个坐标可以从 -infinity 延伸到 +infinity 的 无限大的 棋盘上,你的 骑士 驻扎在坐标为 [0, 0] 的方格里. 骑士的走法和中国象棋中的马相似,走 "日" ...

  2. LeetCode 490. 迷宫(BFS/DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 由空地和墙组成的迷宫中有一个球. 球可以向上下左右四个方向滚动,但在遇到墙壁前不会停止滚动. 当球停下时,可以选择下一个方 ...

  3. LeetCode 1162. 地图分析(BFS)

    1. 题目 你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了.其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域 ...

  4. bzoj1671 Knights of Ni 骑士 BFS

    Description 贝茜遇到了一件很麻烦的事:她无意中闯入了森林里的一座城堡,如果她想回家,就必须穿过这片由骑士们守护着的森林.为了能安全地离开,贝茜不得不按照骑士们的要求,在森林寻找一种特殊的灌 ...

  5. LeetCode 1609 奇偶树(BFS)

    1609. 奇偶树https://leetcode-cn.com/problems/even-odd-tree/ 如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 : 二叉树根节点所在层下标为 0 ...

  6. 2021-08-06 leetcode每日一题 BFS+状态压缩,无向图的

    访问所有节点的最短路径 存在一个由 n 个节点组成的无向连通图,图中的节点按从 0 到 n - 1 编号. 给你一个数组 graph 表示这个图.其中,graph[i] 是一个列表,由所有与节点 i ...

  7. leetcode算法题--骑士拨号器

    原题链接:https://leetcode-cn.com/problems/knight-dialer/ 方法一: 这题是基于"马"在棋盘上的概率,所以我们就按照"马&q ...

  8. leetcode算法题--骑士在棋盘上的概率★

    原题链接:https://leetcode-cn.com/problems/knight-probability-in-chessboard/ 动态规划,这种题目的想法都是逆向思维,题目问从一个点出发 ...

  9. LeetCode 700题 题解答案集合 Python

    2019.5.12更新至题号796,目前共有265题. 2019.5.26更新至题号72, 目前共有347题. 2019.6.16更新至题号70,目前共有382题. 2019.7.7更新至题号5120 ...

最新文章

  1. HTML的base href = “” /
  2. Oracle Profile 使用详解
  3. 关于installshield安装界面上installshield字样的删除问题
  4. 8位可控加减法器_自主可控:QTouch在军工道系统上的应用
  5. 在线斯诺克html5,用HTML 5打造斯诺克桌球俱乐部
  6. 北京中信银行总行地址_中信银行拉萨分行举行“存款保险标识”启用和存款保险条例宣传活动...
  7. 机器学习-KMeans聚类 K值以及初始类簇中心点的选取
  8. 计算机设计大赛作品评语,第九届大学生短片大赛获奖作品评语
  9. JavaScript内存那点事
  10. AngularJs ngList、ngRepeat、ngModelOptions
  11. linux自带的cpu监测工具,Linux CPU实时系统监控工具mpstat
  12. 搭建elasticsearch可视化插件
  13. qq视频转码失败怎么办_视频里提取音频的几种方法
  14. ubuntu12.04 如何设置wiznote到快捷启动栏
  15. kafka数据保存时间问题与kafka的性能测试
  16. CMD 隐藏窗口运行
  17. 克罗内克积Kronecker
  18. 配置办公室无线路由实现ip统一具体方式
  19. 接入Apple Pay流程
  20. Android面试必过——Android常见的问题

热门文章

  1. python中的文件操作
  2. Zookeeper集群角色分配原理
  3. 从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport)的作用
  4. memcpy,strcpy,strncpy
  5. 太原理工大学c语言课程设计报告,[太原理工大学C语言实验报告.doc
  6. input子系统基础之按键5——按键驱动
  7. JAVA实现概率计算(数字不同范围按照不同几率产生随机数)
  8. JavaWeb无限级分销结构分析
  9. Linux下精准踢掉登录用户-pkill命令
  10. Node.js mimimn图片批量下载爬虫 1.00