迷宮問題 DFS

2021-10-19 17:48:31 字數 814 閱讀 3555

給定乙個n*m方格的迷宮,迷宮裡有t處障礙,障礙處不可通過。給定起點座標和終點座標,問: 每個方格最多經過1次,有多少種從起點座標到終點座標的方案。在迷宮中移動有上下左右四種方式,每次只能移動乙個方格。資料保證起點上沒有障礙。

思路:經典搜尋題,這篇我用深度優先搜尋來解題,首先我們定義兩個陣列,乙個用來存迷宮,乙個用來標記該點在當前路線有沒有被走過,如果沒有被走過並且地圖上顯示不是陷阱並且為1(避免處理越界問題,我們直接將地圖上的空地全部刷為1,如果不為1我們就不走那一格),我們就進入下一次搜尋,如果當前是x,y是目標點,直接sum++,然後返回進行下一次搜尋,當起點的四個方向都搜尋完了,dfs結束,輸出sum累積的數即可。

上**:

#include

using

namespace std;

int n,m,t,a[10]

[10];

//地圖陣列

bool v[10]

[10];

//標記陣列

int sx,sy,fx,fy,zx,zy,sum;

int dx[5]

=,dy[5]

=;//迷宮可走的四個方向

void

dfs(

int sx,

int sy)

else}}

}int

main()

}for

(int i=

1;i<=t;i++

)dfs

(sx,sy)

;//在起點進行搜尋;

cout

}

迷宮問題dfs

迷宮問題 棧作為深度優先遍歷 dfs 採用的搜尋方法的特點是盡可能先對縱深方向進行搜尋 可以最快的找到解 include define m 8 define n 8 define maxsize 1000 typedef struct box typedef struct sttype 迷宮問題常用...

迷宮問題dfs

j.迷宮問題 migong problem 1737 discussion description 設有乙個n n 2 n 10 方格的迷宮,入口和出口分別在左上角和右上角。迷宮格仔中分別放0和1,0表示可通,1表示不能,入口和出口處肯定是0。迷宮走的規則如下所示 即從某點開始,有八個方向可走,前進...

dfs迷宮問題模板

輸入起點終點座標,輸入迷宮,輸出最短路 對於每種情況到達的下一步,又有n種情況可以走,include include include define n 100 using namespace std int map n n vis n n int endx,endy,m,n int min 9999...