佇列的建立
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 Queue<point> r = new LinkedList<point>(); //创建队列 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;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(); //拓展完了需要队首出队 } } }
相關推薦:java入門
以上是利用java演算法BFS來求迷宮出口最短路徑的詳細內容。更多資訊請關注PHP中文網其他相關文章!
陳述
本文轉載於:csdn。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
刺客信條陰影:貝殼謎語解決方案
3 週前ByDDD
Windows 11 KB5054979中的新功能以及如何解決更新問題
2 週前ByDDD
在哪裡可以找到原子中的起重機控制鑰匙卡
3 週前ByDDD
<🎜>:死鐵路 - 如何完成所有挑戰
4 週前ByDDD
Atomfall指南:項目位置,任務指南和技巧
1 個月前ByDDD

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1
強大的PHP整合開發環境