C++基於控制檯的迷宮實現(上)
1 程式簡介
在C++控制檯程式中,使用一個二維陣列表示迷宮,陣列中的元素0表示牆,1表示路,如下程式碼所示
int maze[8][8] = {
1,1,0,1,1,1,0,1,
1,1,0,1,1,1,0,1,
1,1,1,1,0,0,1,1,
1,0,0,0,1,1,1,1,
1,1,1,0,1,1,1,1,
1,0,1,1,1,0,1,1,
1,0,0,0,1,0,0,1,
0,1,1,1,1,1,1,1
};
其中,maze[0][0]表示起點,maze[7][7]表示終點,該程式的輸入為從起點到終點的路徑,如圖1所示。
圖1 迷宮的路徑顯示
2 迷宮分析
每個站立點都四個方向(上、下、左、有),每個方向上都對應一個點。在這四個點中,有一個點是當前站立點的“上一個點”,另外三個點是當前站立點的“下一個點”,如圖2所示,紅色框為當前站立點,藍色框為“上一個點”,黃色框為三個“下一個點”。
圖2 站立點的四個方向
當前站立點有三種狀態,分別是“終點”、“通路”和“死路”。如果當前站立點是“終點”,則停止搜尋;如果當前站立點是“通路”,則向下繼續走;如果當前站立點是“死路”,則要向回走,然後搜尋其它路徑。其流程如圖3所示。
3 程式實現
3.1 迷宮中每個點的實現
使用一個struct表示迷宮中的每個點。該結構包含了三個成員變數,分別是該點的橫座標,縱座標和該點的值。
typedef struct MStackElem
{
int x;
int y;
int val;
}MStackElem;
圖3 判斷迷宮路徑流程
相關文章
- C++實現迷宮的生成與解決C++
- c++控制檯程式實現定時器C++定時器
- (C++)資料結構實驗二——迷宮問題C++資料結構
- 走迷宮
- 【Javascript + Vue】實現隨機生成迷宮圖片JavaScriptVue隨機
- 解密迷宮問題:三種高效演算法Java實現,讓你輕鬆穿越未知迷宮解密演算法Java
- 基於RL(Q-Learning)的迷宮尋路演算法演算法
- C++實現控制檯學生學籍管理系統C++
- 【dawn·資料結構】迷宮問題(C++)資料結構C++
- JAVA 實現《複雜迷宮》遊戲|CSDN創作打卡Java遊戲
- 509迷宮
- 基於JavaFX圖形介面演示的迷宮建立與路徑尋找Java
- 基於深度強化學習(DQN)的迷宮尋路演算法強化學習演算法
- 回溯和遞迴實現迷宮問題(C語言)遞迴C語言
- 【Javascript + Vue】實現對任意迷宮圖片的自動尋路JavaScriptVue
- 基於Vue實現拖拽升級(九宮格拖拽)Vue
- c++迷宮問題回溯法遞迴演算法C++遞迴演算法
- 控制檯程式實現Timer
- C++ 控制檯讀寫excelC++Excel
- 簡單介紹Python迷宮生成和迷宮破解演算法Python演算法
- 內容是超正統的迷宮RPG?PSP遊戲《迷宮旅人2》深度解析遊戲
- PHP 生成迷宮路線PHP
- 【面試】如何找到迷宮出口面試
- C++程式設計_簡易計時器(Timer)的控制檯實現C++程式設計
- 基於螢石雲實現的九宮格影片監控效果
- Python實現控制檯中的進度條Python
- C++ 實現基於TCP的聊天室C++TCP
- PHP 解迷宮之 H 最小PHP
- Python迷宮生成器Python
- 藍橋杯-走迷宮(BFS)
- POJ3984-迷宮問題
- 回溯法求迷宮問題
- 自動走迷宮小遊戲~遊戲
- 如何更改 Linux 控制檯上的字型Linux
- 迷宮問題【資料結構實驗報告】資料結構
- java 在控制檯上輸入密碼時,密碼不顯示在控制檯上Java密碼
- 基於OpenSSL的HTTPS通訊C++實現HTTPC++
- C++基於模板實現智慧指標C++指標