解救小哈 dfs深搜

2022-08-29 12:36:17 字數 905 閱讀 8946

小哈去玩迷宮,結果迷路了,小哼去救小哈。迷宮由n行m列的單元格組成(n和m都小於等於50),每個單元格要麼是空地,要麼是障礙物。

問題:幫小哼找到一條從迷宮的起點通往小哈所在位置的最短路徑。(注意:障礙物不能走,小哼也不能走出迷宮外,0表示空地,1表示障礙物)

輸入:

5 40 0 1 0

0 0 0 0

0 0 1 0

0 1 0 0

0 0 0 1

1 1 4 3

輸出:

#include#include

#define inf 10000000

using

namespace

std;

intn,m,sx,sy,ex,ey,tx,ty;

int a[50][50],b[50][50

];int next[4][2]=,,,};//

四個方向

int minn=inf;

void dfs(int x,int y,int

step)

for(int i=0;i<4;i++)

if(b[tx][ty]==0&&a[tx][ty]==0)//

這個位置沒有走過並且是空地

}return;}

intmain()

}scanf(

"%d%d%d%d

",&sx,&sy,&ex,&ey);//

起點和終點座標

b[sx][sy]=1;//

最開始在起點位置,標記

dfs(sx,sy,0

); printf(

"%d\n

",minn);

return0;

}

解救小哈(深度搜尋)

本題可以用深度搜尋,也可以用廣度搜尋,相對來說,廣度搜尋更加簡潔,但是為了學習深度搜尋,故本題採用深度搜尋。思路 依然是使用遞迴,一步一步向前試探,試探後再回溯,最後比較結果,即可得出答案。如下 include define max n 100 define max m 100 inta max n...

dfs 深搜 模板

關於深度優先搜尋的效率問題,有多種解決方法。最具有通用性的是剪枝 prunning 也就是去除沒有用的搜尋分支。有可行性剪枝和最優性剪枝兩種。int mx 4 向上下左右四個方向移動 0,1 0,1 1,0 1,0 int my 4 bool check int x,int y 判斷是否滿足條件的子...

解救小哈 BFS演算法舉例

有一天,小哈乙個人去玩迷宮。但是方向感不好的小哈很快就迷路了。小哼得知後便去解救無助的小哈。此時的小哼已經弄清楚了迷宮的地圖,現在小哼要以最快的速度去解救小哈。那麼,問題來了.輸入5 4 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 4 3 輸出輸入 3 3...