廣搜入門(簡單易懂

2021-10-01 09:53:36 字數 1845 閱讀 3699

這裡需要用到------佇列!

題目:農夫要抓牛,農夫可以向前走一步,向後走一步,向前走x步(x為農夫座標),求最短走幾次可以走到牛的座標。

模板:1、為了方便,定義乙個結構體,代表當前x(座標),steps(走了多少步)

2、建立乙個結構體佇列a,queuea;

2、將起點,即農夫座標加入佇列,此時佇列只有乙個元素,編號1。

3、取出佇列頭元素,將其擴充套件。將所有隊頭元素走一步能到達的元素加入佇列。在這裡就是分別把x=x+1,steps=steps+1和x=x-1,steps=steps+1和x=2*x,steps=steps+1加入佇列,分別標號為2,3,4。此時佇列中包括隊頭有四個元素。

4、用queue.pop()方法刪除頭元素,因為接下來我們要處理下乙個元素啦!刪除隊頭後,佇列中只有2,3,4,則我們再取隊頭2,進行擴充套件。

5、重複第三步。

6、每次取隊頭元素判斷隊頭的x是否為牛的座標,如果是,目的達到,返回隊頭元素對應的steps即為結果!!!

當然,在以上擴充套件過程中,用vis陣列標記下個點有沒有被走過。因為以第一次擴充套件就標記了該點,所以以後經過該點都不會繼續擴充套件,即儲存了達到該點的最小距離!!!

題目:鳴人和佐助

已知一張地圖(以二維矩陣的形式表示)以及佐助和鳴人的位置。地圖上的每個位置都可以走到,只不過有些位置上有大蛇丸的手下,需要先打敗大蛇丸的手下才能到這些位置。鳴人有一定數量的查克拉,每乙個單位的查克拉可以打敗乙個大蛇丸的手下。假設鳴人可以往上下左右四個方向移動,每移動乙個距離需要花費1個單位時間,打敗大蛇丸的手下不需要時間。如果鳴人查克拉消耗完了,則只可以走到沒有大蛇丸手下的位置,不可以再移動到有大蛇丸手下的位置。佐助在此期間不移動,大蛇丸的手下也不移動。請問,鳴人要追上佐助最少需要花費多少時間?

輸入輸入的第一行包含三個整數:m,n,t。代表m行n列的地圖和鳴人初始的查克拉數量t。0 < m,n < 200,0 ≤ t < 10

後面是m行n列的地圖,其中@代表鳴人,+代表佐助。*代表通路,#代表大蛇丸的手下。

輸出輸出包含乙個整數r,代表鳴人追上佐助最少需要花費的時間。如果鳴人無法追上佐助,則輸出-1。

這道題目大家先自己做一遍再來看解析,解析在**塊的下面。

#include using namespace std;

struct pos

//快捷入隊方式,不是必須操作

};int vis[209][209],m,n,t,o[4][2]=,,,};//vis為每個點擁有的最大查克拉

char b[209][209];//儲存迷宮

bool judge(int q,int w)//判斷擴充套件時是否越界

queuea;//建立佇列

void dfs()

if(b[xx][yy]!='#')

} } }

cout<<-1;//找不到就返回-1

return;

}int main()

{ cin>>m>>n>>t;

for(int i=0;i>b[i];

for(int i=0;i@#********

*******###

******##

******##

******##

******##

******##

******##

******##

*******##+

如果按照原來標記的話,(0,2)會被最快的一種走法,一直往右走走過,此時查克拉標記為0,那麼永遠也走不到終點。當另一種走法繞過起點旁的#時,此時步數遠大於2,即使查克拉為1,但是已經被標記為走過,不會再擴充套件。詳細過程可以看上面的**。

廣搜入門(簡單易懂

這裡需要用到 佇列!題目 農夫要抓牛,農夫可以向前走一步,向後走一步,向前走x步 x為農夫座標 求最短走幾次可以走到牛的座標。模板 1 為了方便,定義乙個結構體,代表當前x 座標 steps 走了多少步 2 建立乙個結構體佇列a,queuea 2 將起點,即農夫座標加入佇列,此時佇列只有乙個元素,編...

廣搜的入門

首先先來一題例題來解釋做乙個引子吧 比如 從3開始先選擇一條路來走的話,從3到2然後繼續往後走到1到0,在1就不能繼續往後走了,就開始回溯了。從0到1,再到2,發現2還可以走到4然後再從4走到5,再返回4返回到3,再從3到6再到5。這個地方有提到用棧來優化深度優先搜尋。這個我覺得可以想想,比如走一條...

深搜和廣搜入門

1.描述 對每乙個可能的分支路徑深入到不能再深為止,並且每個結點只能訪問一次。一條路走到黑,走不了再倒回去 2.演算法過程 void dfs 狀態 1.判斷當前狀態是否合法,合法則繼續執行,否則則回到上次呼叫 2.遍歷每個新狀態,如果新狀態合法,dfs 新狀態 3.示例 洛谷 p2802回家 inc...