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

2021-07-10 20:22:34 字數 714 閱讀 1330

問題及**:

給出迷宮的圖紙和初始終點位置,用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,ty,k;

if(x==p&&y==q)//是否到達

}return ;

}int main()

{ int i,j,sx,sy;

cin>>n>>m;//行、列

for(i=1; i<=n; ++i)

for(j=1; j<=m; ++j)

cin>>a[i][j];//迷宮圖

cin>>sx>>sy>>p>>q;//迷宮入口和目標座標

book[sx][sx]=1;//從起點開始搜尋,且起點已經在路程中

dfs(sx,sy,0);//0表示初始步數

cout<

執行結果:

阿,就是再回過頭熟悉一下dfs演算法:從乙個方向走,走不通再回去嘗試另外乙個方向。

DFS深度優先搜尋 迷宮問題

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

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

給乙個n行m列的2維的迷宮,s 表示迷宮的起點,t 表示迷宮的終點,表示不能通過的點,表示可以通過的點。你需要從 s 出發走到 t 每次只能上下左右走動,並且只能進入能通過的點,每個點只能通過一次。現在要求你求出有多少種通過迷宮的的方案。輸入格式 第一行輸入n,m 1 n,m 10 表示迷宮大小。接...

DFS深度優先搜尋之走迷宮

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