使用bfs宽度优先。
根据 leetCode的单词搜索题https://leetcode-cn.com/problems/word-search/得到思路。

class Solution {public static void main(String[] args) {char[][] migong =new char[][] { {'s','#','#'},{'.','.','.'},{'.','.','e'}};new Solution().exist(migong,0,0,2,2);System.out.println(lengthMax);}private static int length=0;private static int lengthMax=Integer.MAX_VALUE;/*** * @param board* @param startI 起点* @param startJ 起点* @param endI 终点* @param endJ 终点* @return*/public boolean exist(char[][] board,int startI,int startJ,int endI,int endJ) {int h = board.length, w = board[0].length;// 用于表示走过的格子,就不能重复走boolean[][] visited = new boolean[h][w];boolean flag = check(board, visited, startI, startJ, endI,endJ);if (flag) {return true;}return false;}public boolean check(char[][] board, boolean[][] visited, int i,int j,int endI,int endJ) {length++;visited[i][j] = true;int[][] directions = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};boolean result = false;for (int[] dir : directions) {int newi = i + dir[0], newj = j + dir[1];if (newi >= 0 && newi < board.length && newj >= 0 && newj < board[0].length&& board[newi][newj]!='#') {if (!visited[newi][newj]) {if (newi==endI && newj==endJ) {lengthMax = Math.min(length, lengthMax);break;}boolean flag = check(board, visited, newi, newj, endI,endJ);if (flag) {result = true;break;}}}}visited[i][j] = false;--length;return result;}
}

迷宫算法总结(最短路径)BFS宽度优先相关推荐

  1. 【BFS宽度优先搜索】

    一.求所有顶点到s顶点的最小步数   1 //BFS宽度优先搜索 2 #include<iostream> 3 using namespace std; 4 #include<que ...

  2. 搜索入门之BFS宽度优先搜索

    基础搜索入门BFS BFS全称宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型.Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽 ...

  3. 188. 武士风度的牛 C++ bfs(宽度优先搜索)

    农民John有很多牛,他想交易其中一头被Don称为The Knight的牛. 这头牛有一个独一无二的超能力,在农场里像Knight一样地跳(就是我们熟悉的象棋中马的走法). 虽然这头神奇的牛不能跳到树 ...

  4. BFS广度优先搜索算法//宽度优先搜索算法

    BFS宽度优先搜索算法,又称广度优先搜索,是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型. Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想. ...

  5. (宽度优先搜索)bfs(包含所有模型)

    持续更新中(点个赞吧) 首先,我们要了解什么是bfs: 宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型. 其实bfs是盲目的搜索周围,知道搜到目的 ...

  6. 算法导论:dfs深度优先搜索算法及基于dfs的拓扑排序以及宽度优先搜索算法bfs

    1.dfs深度优先搜索算法 算法导论中是通过三种标记颜色来介绍dfs的,white代表还没被搜过,grey代表被搜了一些,还没结束,white表示已经搜索完成的状态. c/c++复现dfs代码 #in ...

  7. BFS(宽度优先搜索、广度优先搜索)

    宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型.Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想.其别名又 ...

  8. 图/树——宽度优先搜索(BFS)

    转载 宽度优先搜索(BFS, Breadth First Search)是一个针对图和树的遍历算法.发明于上世纪50年代末60年代初,最初用于解决迷宫最短路径和网络路由等问题. 对于下面的树而言,BF ...

  9. 广度/宽度优先搜索(BFS)详解

    1.前言 广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略.因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域,故得名. 一般可以用它做什么呢?一 ...

最新文章

  1. stdthread(7)并发unique_lock灵活性
  2. 宗宁:全面解析微博财报数据爆发下的平台机会
  3. 表示自己从头开始的句子_微信拍一拍后缀幽默回复有趣的句子 拍了拍唯美内容文案...
  4. SpringBoot如何切换Redis默认库
  5. android动画框架,GitHub - azhengyongqin/CustomAnimationFramework: Android自定义曲线路径动画框架...
  6. 消息称快手已通过港交所聆讯 计划2月第一周上市
  7. 人工智能——自动驾驶仿真软件
  8. Java中基于TCP通过socket嵌套字连接方式传送文件
  9. 回顾云计算项目的得与失
  10. 2018数模国赛A题分析及训练论文
  11. (python)图像下采样(bicubic插值法)
  12. 【深度】“考上北大,我们也和那几亿的农民工人互为镜像”
  13. hankerrank 刷题二( Python 基础)
  14. rsync不覆盖已经存在文件的方法
  15. 原生js仿360开机小助手
  16. c语言随机产生大小写字母,c# 产生随机字符串,包括大小写字母和数字
  17. 探索Nancy的module
  18. 最新的一篇视觉Transformer综述!
  19. IOS版aplayer使用教程_lulu Mac版防火墙使用教程
  20. java guice_如何在Guice中进行需要注入实例的动态绑定?

热门文章

  1. 软考云题库Web版题库V1.1更新功能
  2. Yii setFlash getFlash用法
  3. obiee12c ssl 启动服务报错BEA-149535BEA-149504
  4. sqlMap embedded=iSinta.Beiwo.Infrastructure.Mappers.Member.MemberAddress.xml, iSinta.Beiwo.Inf
  5. AE学习笔记之地图符号化
  6. 2016--Analysis of the DNN-based SRE systems in multi-language conditions
  7. 通用型系统架构层次图
  8. AD2019 层次原理图
  9. Web日志安全分析浅谈
  10. Kotlin学习(3):习惯用法