C++基於控制檯的迷宮實現(上)

棉猴發表於2017-08-09

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 判斷迷宮路徑流程

相關文章