搜索(BFS)---计算在网格中从原点到特定点的最短路径长度
计算在网格中从原点到特定点的最短路径长度
[[1,1,0,1],
 [1,0,1,0],
 [1,1,1,1],
 [1,0,1,1]]
题目描述:
1表示可以经过某个地方,求解从(0,0)位置到(tr,tc)位置的最短路径长度。
思路分析:
使用BFS思想从(0,0)点开始搜索,直到找到(tr,tc)。
代码:
public int minPathLength(int[][]grids,int tr,int tc){
    int[][]direction={{1,0},{-1,0},{0,1},{0,-1}} //表示四个方向
    int m=grids.length;
    int n=grids[0].length;
    int pathLength=0;
    if(m==0||tr<0||tc<0)
        return -1;
    Queue<Pair<Integer,Integer>>queue=new LinkedList<>();//队列中存放每次访问到的点的坐标
    queue.offer(new Pair<Integer,Integer>(0,0));
    while(!queue.isEmpty()){
        int size=queue.size(); //队列中是否有元素
        pathLength++; //每循环一次,长度加一
        while(size-->0){
            Pair<Integer,Integer>cur=queue.poll();
            int cr=cur.getKey(); //当前点的行坐标
            int cc=cur.getValue(); //当前点的列坐标
            grids[cr][cc]=0; //标记当前点已经访问过
            for(int[]d:direction){
                int nr=cr+d[0];
                int nc=cc+d[1]; //下一个点的横纵坐标
                if(nr<0||nr>=m||nc<0||nc>=n||grids[nr][nc]==0){
                    continue;
                }
                if(nr==tr&&nc==tc){
                    return pathLength;
                }
                queue.offer(new Pair<>(nr,nc));
            }
        }
    }
    return -1;
}
搜索(BFS)---计算在网格中从原点到特定点的最短路径长度的更多相关文章
- 网格中的BFS,逆向(POJ2049)
		题目链接:http://poj.org/problem?id=2049 解题报告: 网格中的BFS,最主要的是边界问题. 1.这里在左右,上下两个方向上,分别判断墙,和门,细节是,向上有t个墙,for ... 
- 【笔记】KNN之网格搜索与k近邻算法中更多超参数
		网格搜索与k近邻算法中更多超参数 网格搜索与k近邻算法中更多超参数 网络搜索 前笔记中使用的for循环进行的网格搜索的方式,我们可以发现不同的超参数之间是存在一种依赖关系的,像是p这个超参数,只有在 ... 
- 利用广度优先搜索(BFS)与深度优先搜索(DFS)实现岛屿个数的问题(java)
		需要说明一点,要成功运行本贴代码,需要重新复制我第一篇随笔<简单的循环队列>代码(版本有更新). 进入今天的主题. 今天这篇文章主要探讨广度优先搜索(BFS)结合队列和深度优先搜索(DFS ... 
- 【算法入门】广度/宽度优先搜索(BFS)
		广度/宽度优先搜索(BFS) [算法入门] 1.前言 广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略.因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较 ... 
- HDU 1312 Red and Black --- 入门搜索 BFS解法
		HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ... 
- Android自定义View研究--View中的原点坐标和XML中布局自定义View时View触摸原点问题
		这里只做个汇总~.~独一无二 文章出处:http://blog.csdn.net/djy1992/article/details/9715047 Android自定义View研究--View中的原点坐 ... 
- ML学习分享系列(2)_计算广告小窥[中]
		原作:面包包包包包包 改动:寒小阳 && 龙心尘 时间:2016年2月 出处:http://blog.csdn.net/Breada/article/details/50697030 ... 
- Dijkstra 算法,用于对有权图进行搜索,找出图中两点的最短距离
		Dijkstra 算法,用于对有权图进行搜索,找出图中两点的最短距离,既不是DFS搜索,也不是BFS搜索. 把Dijkstra 算法应用于无权图,或者所有边的权都相等的图,Dijkstra 算法等同于 ... 
- 广度优先搜索 BFS算法
		广度优先搜索算法(Breadth-First-Search,BFS),又称作宽度优先搜索.BFS算法是从根节点开始,沿着树的宽度遍历树的节点.如果所有节点均被访问,则算法中止. 算法思想 1.首先将根 ... 
随机推荐
- Arduino-一些函数
			随机函数: int x=random(); //返回一个整型随机数 int x=random(10); //返回一个 [0,10) 整型随机数 int x=random(1,8); //返回一个 ... 
- hash详细介绍
			转发http://www.cnblogs.com/maybe2030/p/4719267.html (请转步这个网站,写得非常好) 
- React native 平时积累笔记
			常用插件: react-native-check-box 复选框react-native-sortable-listview 列表拖拽排序 react-native-doc-viewer 预览组件 r ... 
- ios   input  readonly失效(点击的时候会有光标出现)/禁止输入法弹出问题
			苹果端用1,2,之后解决不了readonly失效问题(点击的时候会有光标出现)(且不方便用disabled的时候),就用3, 1, $("#appDateTime").foc ... 
- [ZJU 1003] Crashing Balloon
			ZOJ Problem Set - 1003 Crashing Balloon Time Limit: 2 Seconds Memory Limit: 65536 KB On every J ... 
- Redis-cli相关命令
			> flushdb > SELECT OK []> GET db_number (nil) []> []> flushdb OK []> SELECT OK > ... 
- KNN算法之KD树
			KD树算法是先对数据集进行建模,然后搜索最近邻,最后一步是预测. KD树中的K指的是样本特征的维数. 一.KD树的建立 m个样本n维特征,计算n个特征的方差,取方差最大的第k维特征作为根节点.选择第k ... 
- C++ 对象间通信框架 V2.0 ××××××× 之(五)
			类定义: ======================================================================= // MemberFuncPointer.h: ... 
- #1126-JSP客户端请求
			JSP 客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息头的一部分来传送的.您可以查阅HTTP协议来获得更多的信息. 下表列出了浏览器 ... 
- CG-CTF | 上传绕过
			最近一直在做算法题,头都要大了,今天悄咪咪来一个web换换脑子,一发flag敲开♥[虽然知道这是个水题ε=ε=ε=┏(゜ロ゜;)┛] 
