美文网首页
宽度优先遍历 BFS

宽度优先遍历 BFS

作者: YOLO哈哈哈 | 来源:发表于2019-01-17 06:44 被阅读0次

宽度优先遍历 BFS

1· 机器人的运动范围 (13 剑指offer )
  • 这道题 可以使用DFS 或 BFS 来求解, 但是DFS 可能会导致栈溢出, 所以这里选择BFS算法 + queue 的数据结构
  • 解题思路: 从左上角开始,BFS 遍历合法扩展没有遍历过的格子,最后所有遍历过的个数 就是合法的答案, 所以时间复杂度O(mn)所有格子的个数, 在C++ 中pointer 一秒可以遍历 1亿个 格子。
  • 这道题里的BFS 是 由queue 数据结构 来存储 坐标, 因为java 中不能直接 存放pair, 所以存放在 queue 里的 元素可以是数组。
public int movingCount(int threshold , int rows , int cols ){  
   if(rows <=0 || cols <= 0)
     return 0;
    int res = 0; 
   boolean [][] visited = new boolean [rows][cols];
   Queue<int[]> queue = new LinkedList<>();
   int[] dx = {-1, 0, 1, 0},  dy = {0, 1, 0, -1}; 
   queue.offer(new int[] {0,0});
   while( !queue.isEmpty()){
       int[] arr = queue.poll();
       if( get_sum_Digit(arr[0]) + get_sum_Digit(arr[1]) > threshold || arr[0] >= rows
           || arr[1] >= cols || arr[0] < 0 || arr[1] < 0 || visited[arr[0]][arr[1]] ) continue;
       res ++; 
       visited[arr[0]][arr[1]] = true; 
       for(int i=0; i<4; i++) {
           queue.offer(new int[]{ arr[0] + dx[i] , arr[1] +  dy[i]}); 
       }           
   }  /* while */
   return  res;
}

public int get_sum_Digit(int input) {
   int sum = 0;
   while(input != 0) {
     sum += input %10;
     input /= 10;
   }
 return  sum;
}

相关文章

  • UVA 122 (Trees on the level)

    宽度优先遍历bfs 运行结果:

  • 二叉树的三种遍历

    概念: 有两种遍历树的策略: 1.深度优先搜索(DFS) 2.宽度优先搜索(BFS) 前序遍历-使用宽度优先搜索 ...

  • 宽度优先遍历 BFS

    宽度优先遍历 BFS 1· 机器人的运动范围 (13 剑指offer ) 这道题 可以使用DFS 或 BFS 来...

  • 宽度优先搜索-(BFS)及例题详解

    宽度优先搜索-(BFS) 宽度(广度)优先搜索(BFS)是一种经典的的搜索算法,这种算法一般会遍历整个数据来寻找最...

  • 二叉树遍历/搜索

    遍历 1.宽度优先遍历BFS 利用队列 2.深度优先遍历DFS 1.递归:前序中序后序 2.非递归:前序中序后序 利用栈

  • 无向图DFS和BFS

    基本结构 DFS深度优先遍历 BFS广度优先遍历 符号图

  • leecode岛屿数量

    题目描述可用解法DFS 深度优先遍历BFS 广度优先遍历算法思路:下列代码用BFS,循环遍历输入的二维列表如果遇到...

  • BFS与DFS

    1.什么是BFS,DFS BFS宽度优先搜索.一层一层搜索.把每行的结果存入到队列中,然后遍历求下一层.DFS深度...

  • BFS和DFS

    BFS:广度优先搜索 DFS:深度优先搜索 树的遍历 BFS:A B C D E F G H I DFS: A ...

  • 算法图解学习 (六)

    广度优先算法(BFS),是一种图形搜索算法,简单的来说,广度优先算法是从根节点开始开始,沿着树的宽度遍历树的节点,...

网友评论

      本文标题:宽度优先遍历 BFS

      本文链接:https://www.haomeiwen.com/subject/ujrbdqtx.html