深搜經典例題

2021-10-08 18:38:53 字數 1034 閱讀 1056

深度優先搜尋(dfs),其過程簡單來說就是從每乙個可能的分支出發深入到無法深入

為止,並且每個節點只訪問一次。

深搜的實質就是窮舉,按照一定的順序和不同的方法不斷去嘗試,最後尋找到答案,

在不斷搜尋的過程中,滿足條件的狀態就是目的狀態之一。

void

dfs(

int x,

int y)

a[xx]

[yy]=1

;//標記

dfs(xx,yy)

; a[xx]

[yy]=0

;//走過之後取消標記

}

迷宮問題(原題)

思路:先從出發點隨意找個方向走,一步一步向前試探,碰到了死胡同或者無路可走了,再看看有沒有其他路可走,若還有其他路可走,選擇可走的路繼續試探,如果沒有路可走了,就退回到上一步,以這樣的方法不斷退回和探索,直到找到出口為止。

**:

#include

#include

#define maxn 10

using

namespace std;

int n,m,t,sx,sy,fx,fy,l,r,sum;

int a[maxn]

[maxn]

,b[maxn]

[maxn]

;//a表示迷宮的地圖,b用來標記

int ax[4]

=,ay[4]

=;//橫座標的上下左右,縱座標的上下左右

void

dfs(

int x,

int y)

for(

int i=

0;i<

4;i++)}

}int

main()

a[sx]

[sy]=0

;//將起點賦值為0

dfs(sx,sy)

; cout

}

深搜與廣搜以及例題

做題目的時候,遇見了兩個型別十分相似的題目,可以乙個直接輸出最短的步數,乙個要儲存,這個就很犯難 然後通過這兩題,有重新了解了乙個bfs與dfs的區別 一 路徑的輸出 1.dfs dfs其實就是一直順著乙個方向不斷的搜尋知道找到了目標為止。路徑輸出的時候,利用記錄前面的點即可 include inc...

迷宮問題 深搜經典問題

迷宮問題是深搜演算法的最常見也是最基礎的題型之一 深搜大家應該都已經理解了 如果還不知道深搜是什麼可以參考我之前的一篇 深搜講解 我們把我們撞南牆才回頭的思想運用到我們的迷宮問題中 就可以理解為 從起點開始隨便找一條路開始走 走到了終點或沒有繼續向前的格仔就回頭 用最簡單的2x2迷宮來舉例 如果我們...

hdu1518Square 經典深搜

好久沒做深搜了,上午優哉遊哉的想自己的為啥超時要咋剪枝呢,得到下午就考生態期中的噩耗直接跑出去了 說題意 乙個月前學弟問過,簡單看過 都忘了,b 既然是深搜,函式引數裡面一定是帶著需要用的量的 對於這個題來說,帶著的三個引數分別是 當前這條邊的長度,湊完的邊數,從第幾個木棍開始找 看這個 就在糾結 ...