2022-6-26 剑指offer-BFS
地上有一个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 class Solution { 2 public int movingCount(int m, int n, int k) { 3 int[][] dir={{-1,0},{1,0},{0,1},{0,-1}}; 4 Queue<int[]> queue=new LinkedList<>(); 5 boolean[][] visited=new boolean[m][n]; 6 queue.offer(new int[]{0,0}); 7 visited[0][0]=true; 8 int ans=0; 9 while (!queue.isEmpty()){ 10 int[] temp=queue.poll(); 11 ans++; 12 int x=temp[0]; 13 int y=temp[1]; 14 for (int i=0;i<4;i++){ 15 int dx=x+dir[i][0]; 16 int dy=y+dir[i][1]; 17 if (dx>=0&&dx<m&&dy>=0&&dy<n&&!visited[dx][dy]&&(count(dx)+count(dy)<=k)){ 18 queue.offer(new int[]{dx,dy}); 19 visited[dx][dy]=true; 20 } 21 } 22 } 23 return ans; 24 } 25 26 27 public int count(int x){ 28 int sum=0; 29 while (x>0){ 30 sum+=x%10; 31 x/=10; 32 } 33 return sum; 34 } 35 }
思路:BFS搜索。
分类:
每日一题练习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!