#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的迷宮...