怎么样使用java算法BFS来求迷宫出口最短路径

  介绍

这篇文章给大家分享的是有关怎么样使用java算法BFS来求迷宫出口最短路径的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

队列的建立

静态队列r=新LinkedList ();//创建队列

队列的基本方法

r.offer ();入队尾

r.poll ();出队首

r.peek ();队首的内容

代码实现:

全局变量设置

包两个;      进口java.util.LinkedList;   进口java.util.Queue;   进口java.util.Scanner;      公开课BFS {   静态int [] []=new int [100] [100];//输入迷宫   静态v int [] []=new int [100] [100];//走过的标记为1   静态int startx starty;//输入起点位置   静态整数p, q;//输入要到达的坐标位置   静态int dx []={0 1 0 1};//方向数组   静态int dy []={1, 0, 1, 0};      静态Queuer=新LinkedList ();//创建队列         {//静态类点建立类坐标属性   int x;   int y;   int步骤;      }

输入迷宫和起始位置,目标位置

公共静态void main (String [] args) {   扫描仪在=新扫描仪(系统);   int m=in.nextInt ();   在.nextInt int n=();   for (int i=1; i<=m;我+ +)//输入迷宫   for (int j=1; j<=n; j + +)   [我][j]=in.nextInt ();      startx=in.nextInt ();   starty=in.nextInt ();//输入目标和起始位置   p=in.nextInt ();   q=in.nextInt ();

BFS算法开始

1,设置队首

//石   点开始=new点();//定义一个初始类作为队首   开始。x=startx;   开始。y=starty;   开始。一步=0;   r.offer(开始);   v [startx] [starty]=1;

2,进入循环体

,(! r.isEmpty()){//当队列为空时跳出循环      int x=r.peek()方式;//把队首的属性赋值   int y=r.peek () .y;   .step int一步=r.peek ();         if (x==p和,y==q){//到达目的地,退出循环   System.out.println(步骤);   打破;   }      for (int i=0; i<4,我+ +){//广度遍历,右下左上分别入队   int tx=x + dx[我];   int泰=y + dy(我);         如果((tx) (ty)==1,,v (tx) (ty)==0){//判断是否可以入队//入队   点temp=new点();//建立一个临时类   temp.x=tx;   temp.y=泰;   temp.step=r.peek ()。步+ 1;         r.offer(临时);//入队   v (tx) (ty)=1;//标记为1   }   }      r.poll ();//拓展完了需要队首出队         }         }   }

感谢各位的阅读!关于怎么样使用java算法BFS来求迷宫出口最短路径就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

怎么样使用java算法BFS来求迷宫出口最短路径