演算法實驗一 (DFS 回溯) 走迷宮

2021-09-29 06:54:10 字數 738 閱讀 6900

時限:1000ms 記憶體限制:10000k  總時限:3000ms

描述判斷是否能從迷宮的入口到達出口

輸入先輸入兩個不超過20的正整數表示迷宮的行數m和列數n,再輸入口和出口的座標,最後分m行輸入迷宮,其中1表示牆,0表示空格每個數字之間都有空格。

輸出只能向上、下、左、右四個方向走若能到達,則輸出"yes",否則輸出"no",結果佔一行。

輸入樣例

3 30 0

2 20 0 0

1 1 0

0 1 0

輸出樣例

yes

#include #include #include using namespace std;

int m,n;

int flag=0;

int in1,in2;

int out1,out2;

int maze[25][25];

int visited[25][25];

int direction[4][2]=,,,};

void dsf(int x,int y)

visited[x][y]=1;

for(int i=0;i=0 && nx=0 && ny<=m && maze[nx][ny]==0 && visited[nx][ny]==0)

dsf(nx,ny); }}

int main()

else

return 0;

}

C 回溯法走迷宮

定義乙個迷宮,0表示通道,1表示牆 8,10 11 12 13 14 15 16 17 18 19 2021 struct try 定義乙個棧,儲存路徑 22 path maxsize 定義棧 2728 int top 1 初始化棧指標 2930 void findpath int xb,int y...

DFS(入門題,走迷宮)

1185 走迷宮 time limit 1 sec memory limit 128 mb submit 383 solved 155 submit status web board description 給一張個迷宮,問能否從起點走到終點,只能往上下左右走,不能斜著走 input 多組測試資料,...

用回溯遞迴演算法解決走迷宮問題

迷宮是由許多小方格構成的矩形,在每個小方格中有的是牆,有的是路,走迷宮就是從乙個小方格沿上下左右四個方向到臨近的方格,當然不能穿牆。設迷宮的入口是在左上角 1,1 出口是右下角 8,8 根據給定的迷宮,找出一條從入口到出口的路徑。演算法設計思路 從入口開始廣度優先搜尋所有可到達的方格入隊,再擴充套件...