利用java算法BFS来求迷宫出口最短路径用java算法BFS寻找迷宫出口的最短路径,
队列的建立
静态队列r=new LinkedList();//创建队列(学习视频分享:java课程)
排队的基本方法
r . offer();队列结束
r . poll();队长
r . peek();组长的内容
代码实现:
全局变量设置
包装二;
导入Java . util . LinkedList;
导入Java . util . queue;
导入Java . util . scanner;
BFS公开课
static int a[][]=new int[100][100];//进入迷宫
static int v[][]=new int[100][100];//及格分数是1
static int startx,starty//输入起点位置
静态int p,q;//输入要到达的坐标位置
static int dx[]={0,1,0,-1 };//方向数组
static int dy[]={1,0,-1,0 };
static queue point r=new LinkedListPoint();//创建队列
静态类点{ //创建类坐标属性
int x;
int y;
int step
}进入迷宫,开始位置和目标位置
公共静态void main(String[] args) {
扫描仪in=新扫描仪(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
点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()。步骤;
If(x==p y==q) {//到达目的地,退出循环
System.out.println(步骤);
打破;
{}
for(int I=0;i4;I) {//广度遍历,右,底,左,右分别
int tx=x dx[I];
int ty=y dy[I];
if(a[tx][ty]==1v[tx][ty]==0){//判断是否可以入队。
//加入团队
point temp=new point();//创建一个临时类
temp.x=tx
temp.y=ty
temp.step=r.peek()。步骤1;
r . offer(temp);//加入团队
v[tx][ty]=1;//标记为1
{}
{}
r . poll();//资料片之后,团队需要先离开团队
{}
{}
}相关推荐:java入门是使用java算法BFS寻找迷宫出口最短路径的详细内容。请多关注其他关于Lei.com PHP知识的相关文章!