如何利用java算法的BFS来求出迷宫出口最短路径的呢
导读:这篇文章给大家分享的是“如何利用java算法的BFS来求出迷宫出口最短路径的呢”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“如何利用java算法的BFS来求出迷宫出...
这篇文章给大家分享的是“如何利用java算法的BFS来求出迷宫出口最短路径的呢”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“如何利用java算法的BFS来求出迷宫出口最短路径的呢”吧。
队列的建立
static Queue r = new LinkedList(); //创建队列
(学习视频分享:java课程)
队列的基本方法
r.offer(); 入队尾
r.poll(); 出队首
r.peek(); 队首的内容
代码实现:
全局变量设置
package Two; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class BFS { static int a[][] = new int [100][100]; //输入迷宫 static int v[][] = new int [100][100]; //走过的标记为1 static int startx,starty; //输入起点位置 static int p,q; //输入要到达的坐标位置 static int dx[] = { 0,1,0,-1} ; //方向数组 static int dy[] = { 1,0,-1,0} ; static Queuepoint> r = new LinkedListpoint> (); //创建队列 static class point{ //建立类坐标属性 int x; int y; int step; }
输入迷宫和起始位置,目标位置
public static void main(String[] args) { Scanner in = new Scanner(System.in); int m = in.nextInt(); int n = in .nextInt(); for(int i=1; i=m; i++) //输入迷宫 for(int j=1; j=n; j++) a[i][j] = in.nextInt(); startx = in.nextInt(); starty = in.nextInt(); //输入目标和起始位置 p = in.nextInt(); q = in.nextInt();
BFS算法开始
1、设置队首
//BFS point start = new point(); //定义一个初始类作为队首 start.x = startx; start.y = starty; start.step = 0; r.offer(start); v[startx][starty]=1;
2、进入循环体
while(!r.isEmpty()) { //当队列为空时跳出循环 int x = r.peek().x; //把队首的属性赋值 int y = r.peek().y; int step = r.peek().step; if(x==p & & y==q) { //到达目的地,退出循环 System.out.println(step); break; } for(int i=0; i4; i++) { //广度遍历,右下左上分别入队 int tx= x+dx[i]; int ty= y+dy[i]; if(a[tx][ty] == 1 & & v[tx][ty]==0) { //判断是否可以入队 //入队 point temp = new point(); //建立一个临时类 temp.x = tx; temp.y = ty; temp.step = r.peek().step +1; r.offer(temp); //入队 v[tx][ty]=1; //标记为1 } } r.poll(); //拓展完了需要队首出队 } } }
到此这篇关于“如何利用java算法的BFS来求出迷宫出口最短路径的呢”的文章就介绍到这了,感谢各位的阅读,更多相关如何利用java算法的BFS来求出迷宫出口最短路径的呢内容,欢迎关注网络资讯频道,小编将为大家输出更多高质量的实用文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何利用java算法的BFS来求出迷宫出口最短路径的呢
本文地址: https://pptw.com/jishu/654496.html