【Java】寬度優先演算法解決迷宮(Maze)問題
正文之前
國慶最後一天,也是準備爆肝五年這個歷史性任務開啟的前一天,今天很傷,但是麼~

螻蟻聚團求存,強者則與寂寞和星空為伴
哈哈,這句話居然還是我超喜歡的小說之一的作者寫的。。。果然,英雄所見略同:

所以,請計算機2018級《人工智慧》課堂的兄弟,看到這裡就自覺關閉網頁吧。。。。我寫了一下午。。。想留著紀念下。。不想明天直接就是一大片一樣的。。
正文
- 作業需求如下,其實很簡單啦!~

起點狀態其實就對應初始狀態,起點可走周圍四個方向(過程中需對是否越界,是 否撞牆做出判斷,不滿足條件都為不可到達的狀態,生成子節點時可直接不考慮), 一旦遍歷的點為終點這時經歷的路徑必為最短,即經歷的層數最少,當然,此路徑並 不唯一,取最先達到終點的路徑為優先。
- 演算法流程(基於寬度優先)
-
3.1 步驟流程:
~ 我先藏起來~ 明天再發~
-
3.2 關鍵點分析
上述步驟中,初始化動作為步驟一,步驟二到步驟八是迴圈操作。其中有三處跳出 迴圈的點:
- 佇列 Q 為空時,代表著所有的節點能從初始點到達的節點都已經搜尋完畢,可以 直接結束程式(break);
- 如果當前節點是搜尋過的節點,那麼退出本次迴圈,進入下次迴圈(continue); 3. 找到了目標節點,回溯至初始節點後得到路徑,完美退出(exit)。
程式碼放一放:

輸出結果如圖:

正文之後
我知道這個演算法實現寫的稀爛的。。。而且講道理,我覺得很是有點廣度優先的意思在裡頭了。。。這。。很可怕了~ 不過不管了。寫了那麼久,將就著用吧!溜了,吃飯去了