深度優先搜尋(DFS)求解迷宮問題

2021-08-16 01:53:37 字數 658 閱讀 8903

給乙個n行m列的2維的迷宮,'s'表示迷宮的起點,'t'表示迷宮的終點,'#'表示不能通過的點,'.' 表示可以通過的點。

你需要從's'出發走到't',每次只能上下左右走動,並且只能進入能通過的點,每個點只能通過一次。現在要求你求出有多少種通過迷宮的的方案。

輸入格式

第一行輸入n,m(1≤n,m≤10)表示迷宮大小。接下來輸入n 行字串表示迷宮。

輸出格式

輸出通過迷宮的方法數。

樣例輸入

2 3s.#

..t樣例輸出

2比較典型的dfs題目,直接上**。有不懂的地方歡迎討論。

#include#includeusing namespace std;

int n,m;

char maze[10][10];

int flag[10][10];

int ways;

void find_enter(int &x,int &y)

else if(maze[i][j]=='#')//走到迷宮邊界,返回

return;

else

}}int main()

}find_enter(x,y);//找到迷宮起點

dfs(x,y);

cout<}

深度優先搜尋DFS(迷宮問題)

問題及 給出迷宮的圖紙和初始終點位置,用dfs求最小步數。include using namespace std int n,m,p,q,min 99999999 int a 51 51 book 51 51 void dfs int x,int y,int step 順時針 右下左上 int tx...

DFS深度優先搜尋 迷宮問題

首先我們用乙個陣列來儲存這個迷宮,用 1 代表障礙物,用 0 代表可通行的路 define n 22 int maze n n 假設我們現在處於 x,y 點 x y 指 maze 陣列的行 列 對於接下來的每一條路徑,我們只能乙個乙個地去嘗試 我們可以先往右走,直到走不通的時候再退回來,然後再去嘗試...

DFS深度優先搜尋之走迷宮

走迷宮 problem description 乙個由n m個格仔組成的迷宮,起點是 1,1 終點是 n,m 每次可以向上下左右四個方向任意走一步,並且有些格仔是不能走動,求從起點到終點經過每個格仔至多一次的走法數。input 第 一行乙個整數t 表示有t 組測試資料。t 110 對於每組測試資料 ...