簡易迷宮 遞迴演算法實現

2021-07-30 22:32:27 字數 1000 閱讀 1668

#include#includeusing namespace std;

#define maxcol 10

#define maxrow 10

struct seat//定義乙個表示位置的結構體

int _x;

int _y;

};class maze

} }void printmaze()//列印迷宮

cout<= maxrow || s._y < 0 || s._y >= maxcol)//出口

return true;

return false;

} bool passmaze(seat& s)//走迷宮

if(passmaze(left))

if(passmaze(right))

if(passmaze(down))

_map[s._x][s._y] = 3;//若前後左右都走不通則回退回來並且將原來位置標記為3,防止走回頭路

return false;

} }private:

int **_map;//定義乙個二級指標儲存二維陣列

};int main()

, ,

, ,

, ,

, ,

, };

maze maze(maparr,maxrow,maxcol);

maze.printmaze();

seat s(9,6);//給出入口

maze.passmaze(s);//走迷宮

maze.printmaze();//將走過的路線列印出來

system("pause");

return 0;

}

附上結果截圖

其實在走迷宮那部分中的遞迴回溯演算法就是一種探路的思想,看前後左右哪個節點可以走通。

演算法 遞迴(迷宮)

有乙個迷宮地圖,有一些可達的位置,也有一些不可達的位置 障礙 牆壁 邊界 從乙個位置到下乙個位置只能通過向上 或者向右 或者向下 或者向左 走一步來實現,從起點出發,如何找到一條到達終點的通路 package indi.com.algorithms.recursion public class mi...

迷宮 遞迴演算法

迷宮,遞迴實現 1 2 迷宮之遞迴,能夠輸出所有的路線。3 4 include 5 include 6 using namespace std 7 typedef struct positionposition,pposition 1112 int mazemaplinenumber 0 13 pp...

演算法 Python遞迴實現走迷宮

迷宮問題 乙個由0或1構成的二維陣列中,假設1是可以移動到的點,0是不能移動到的點,如何從陣列中間乙個值為1的點出發,每一只能朝上下左右四個方向移動乙個單位,當移動到二維陣列的邊緣,即可得到問題的解,類似的問題都可以稱為迷宮問題。在python中可以使用list巢狀表示二維陣列。假設乙個6 6的迷宮...