Rumah > Java > Javabermula > 利用java算法BFS来求迷宫出口最短路径

利用java算法BFS来求迷宫出口最短路径

王林
Lepaskan: 2020-11-10 15:38:08
ke hadapan
2668 orang telah melayarinya

利用java算法BFS来求迷宫出口最短路径

队列的建立

static Queue r = new LinkedList(); //创建队列
Salin selepas log masuk

(学习视频分享: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 Queue<point> r = new LinkedList<point>();  //创建队列
  
  
  static class point{     //建立类坐标属性
	  int x;
	  int y;
	  int step;
	
  }
Salin selepas log masuk

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

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();
Salin selepas log masuk

BFS算法开始

1、设置队首

  //BFS
  point start = new point();   //定义一个初始类作为队首
  start.x = startx;
  start.y = starty;
  start.step = 0;
  r.offer(start);
  v[startx][starty]=1;
Salin selepas log masuk

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;i<4;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(); //拓展完了需要队首出队
  
  	
  }
  

}
}
Salin selepas log masuk

相关推荐:java入门

Atas ialah kandungan terperinci 利用java算法BFS来求迷宫出口最短路径. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Isu terkini
Bolehkah java digunakan sebagai bahagian belakang web?
daripada 1970-01-01 08:00:00
0
0
0
Tidak dapat memasang java
daripada 1970-01-01 08:00:00
0
0
0
Pasang JAVA
daripada 1970-01-01 08:00:00
0
0
0
Bagaimanakah php melaksanakan penyulitan sha1 java?
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan