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