迷宮演算法c 實現

2021-07-13 02:50:43 字數 1262 閱讀 3627

迷宮演算法是乙個比較簡單的演算法,是在迷宮裡如何通過從入口找到出口,總的思路來是:每一條路都是由兩面呢牆壁組成,並且是每一面是連續的,只要我們從入口延著乙個牆壁一直走,例如一直沿著右手邊的牆壁來走,就一定可以找到出口,即便是乙個死胡同,沿著牆壁也可以繞出來。

**** ****

**** * **

**** *  *

**** ** *

**    * *

** **   *

*  ******

*t*******

上圖可以看成乙個簡易的迷宮,*代表牆,空格代表通路,從下面開始要想找到上面那個出口,應該可以沿著右手邊(或者左手邊的)的牆一直前進,如果有拐彎就看右邊牆的牆的走向。

基本資料結構:在每個位置是,有橫縱座標兩個變數,還有在這個位置所面朝的方向

int  position_x;

int position_y;

direction forward    //direction是個列舉型別,有四個方向  north、south、east、west

核心思想:

在每個位置上時,先判斷在所面臨方向的右邊是否是牆,如果不是牆就向右拐,如果是牆就判斷是前方是不是牆,如果前方不是牆就直行,如果前方也是牆,就要更改當前位置所處的方向,讓方向向左轉。依次類推,直到找到出口

在具體實現上定義了兩個類,乙個是迷宮的地圖類,乙個是走迷宮的人的類

void maze_person::start()

同時,演算法中turnleft()如下,turnright()和gohead()方法類似

void maze_person::turnleft()

}

主函式如下:

int main(),

, ,

, ,

, ,

};maze_mpp maze;

maze.set_mazemap(&map1[0][0],8,9);

maze.setmazewall('*');

maze.drawmap();

maze_person *personer=new maze_person(7,1,north);

personer->gotoxy(7,1);

coutpersoner->start();

system("pause");

return 0;

}

迷宮演算法( 實現)

迷宮演算法 實現 對於走迷宮,人們提出過很多計算機上的解法。深度優先搜尋 廣度優先搜尋是使用最廣的方法。生活中,人們更願意使用 緊貼牆壁,靠右行走 的簡單規則。下面的 則採用了另一種不同的解法。它把走迷宮的過程比做 染色過程 假設入口點被染為紅色,它的顏色會 傳染 給與它相鄰的可走的單元。這個過程不...

C 實現迷宮演算法例項解析

本文以例項形式描述了c 實現迷宮演算法。本例中的迷宮是乙個矩形區域,它有乙個入口和乙個出口。在迷宮的內部包含不能穿越的牆或障礙。障礙物沿著行和列放置,它們與迷宮的矩形邊界平行。迷宮的入口在左上角,出程式設計客棧口在右下角 本例項迷宮演算法的功能主要有 1.自動生成10 10迷宮圖 2.判斷是否有迷宮...

棧實現迷宮演算法

棧實現迷宮回溯演算法 實現 include using namespace std include include define n 10 矩陣最大行列數 template class mazestack 迷宮將要用到的棧 mazestack void push t x this ptr size ...