剑指 Offer 13. 机器人的运动范围——宽度优先搜索
题目描述
地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?
示例 1:
输入:m = 2, n = 3, k = 1
输出:3
示例 2:
输入:m = 3, n = 1, k = 0
输出:1
提示:
1 <= n,m <= 100
0 <= k <= 20
分析
每次看一下自己周围的四个方向,能走就走,然后将该点加入队列,下次从队列中拿出该点就能够从该点出发继续重复上述过程,一直搜索下去,直到将所有的点都试探完结束。最后visit数组中1的个数即最终机器人能够到达的格子数
AC代码
1 class Solution { 2 public int movingCount(int m, int n, int k) { 3 // 宽度搜索 4 int[][] visit = new int[m][n]; 5 // 初始化,第一个默认已经被访问 6 visit[0][0] = 1; 7 // 坐标数组 8 int[] x = {0, 1, 0, -1}; 9 int[] y = {1, 0, -1, 0}; 10 // 每次看一下自己周围的四个方向,能走就走,然后将该点加入队列,下次从队列中拿出该点就能够从 11 // 该点出发继续重复上述过程,一直搜索下去,直到将所有的点都试探完结束。最后visit数组中1的个数 12 // 即最终机器人能够到达的格子数 13 Deque<Point> deque = new LinkedList<>(); 14 deque.add(new Point(0, 0)); 15 while (deque.size() > 0) { 16 Point cur = deque.poll(); 17 for (int i = 0; i < 4; i++) { 18 int nextX = cur.x + x[i]; 19 int nextY = cur.y + y[i]; 20 if ((nextX >= 0 && nextX < m && nextY >= 0 && nextY < n) && getSum(nextX, nextY) <= k && visit[nextX][nextY] == 0) { 21 // 可以进入 22 visit[nextX][nextY] = 1; 23 // 加入队列 24 deque.add(new Point(nextX, nextY)); 25 } 26 } 27 } 28 29 // 统计个数 30 int res = 0; 31 for (int i = 0; i < m; i++) { 32 for (int j = 0; j < n; j++) { 33 if (visit[i][j] == 1) { 34 res++; 35 } 36 } 37 } 38 39 return res; 40 } 41 42 public int getSum(int x, int y) { 43 int res = 0; 44 while (x > 0) { 45 res += x % 10; 46 x /= 10; 47 } 48 while (y > 0) { 49 res += y % 10; 50 y /= 10; 51 } 52 53 return res; 54 } 55 } 56 57 class Point { 58 int x; 59 int y; 60 Point(int x, int y) { 61 this.x = x; 62 this.y = y; 63 } 64 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能