走迷宮問題 演算法競賽入門經典

2022-08-18 07:12:11 字數 1043 閱讀 7920

思路分析:

本題可以採取bfs的方式進行解題,我們把每乙個節點的下一層節點全部遍歷完,並讓它們不再次遍歷(設定標誌陣列)。bfs的解決方法是利用佇列知識,每次讀取乙個資料,並讓該資料出隊,然後把該節點的子節點依次入隊,直到最後遍歷完畢。

下面貼上**:

1 #include2 #include3 #include

4using

namespace

std;

5#define maxn 105

6int dx = , dy = ;

7char name = ;

8int q[maxn * maxn]; //

佇列,儲存當前結點編號

9int

vis[maxn][maxn], nmap[maxn][maxn];

10int m, n; //

行、列數

11int dir[maxn *maxn];

12int

fa[maxn][maxn], dis[maxn][maxn], last_dir[maxn][maxn];

13void

funcinit();

14void bfs(int x, int

y);15

void

funcinput();

16void print_path(int x, int

y);17

intmain()

1825

void

funcinit()

2632}33

void bfs(int x,int

y)3457}

58}59}

60void

funcinput()

6170}71

}72void print_path(int x,int

y)73

83while(c--)

8489 cout<<"

最短路徑長度為:

"<1][n-1]<90 }

注意:需要自己看懂bfs大致模板。

演算法競賽 走迷宮

乙個網格迷宮由n行m列的單元格組成,每個單元格要麼是空地 用1表示 要麼是障礙物 用0表示 任務是找一條從起點到終點的最短移動序列,其中udlr代表上下左右移動到 相鄰單元格。任何時候都不能在障礙物格中,也不能走到迷宮之外。起點和終點保證是空地 n,m 100 圖的bfs與樹的bfs一樣,但需要避免...

經典演算法 (六)老鼠走迷宮

問題描述 給定乙個二維陣列,陣列中2表示牆壁,0表示通路,由此陣列可展示為乙個迷宮圖。給定入口位置和出口位置,判斷之間是否存在通路並顯示出走出迷宮的道路。問題解答 實際上是使用回溯演算法求解該問題,就是在上下左右四個方向試探,倘若有路則走一步,在新的位置繼續在四個位置試探,並且對走過的路進行標記,倘...

《演算法競賽入門經典》 豎式問題

題目 找出所有形如abc de 三位數乘以兩位數 的算式,使得在完整的豎式中,所有數字都屬於乙個特定的數字集合。輸入數字集合 相鄰數字之間沒有空格 輸出所有豎式。每個豎式前應有編號,之後應有乙個空行。最後輸出解的總數。具體格式見樣例輸出 為了便於觀察,豎式中的空格改用小數點顯示,但你的程式應該輸出空...