BFS理解入門

2021-09-24 05:47:34 字數 1329 閱讀 5292

寬度優先搜尋(breath frist search )

用佇列實現:

給乙個圖:  開始位置 (1,1),0代表可以走,1代表不可以走,最終到(4,6)位置

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

操作:最初一步:從位置(1,1)壓入佇列

之後進入while(!q.empty())迴圈操作,先得到佇列頭元素即(1,1)然後將佇列

頭元素刪掉,然後判斷得到的頭元素是不是我們所要的目的座標即(4,6),是的話

輸出結束操作,反則,向四周擴散,en.step=st.step+1

進入for迴圈操作,for迴圈可以實現向四周擴散一步的操作,但因為限制條件的

緣故最多擴散四步,將每次擴散的壓入佇列裡即可,直到找到目的座標

圖2:1 1 0 0 0 0

1 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

圖3:1 1 1 0 0 0

1 1 0 0 0 0

1 0 0 0 0 0

0 0 0 0 0 0

圖4:1 1 1 1 0 0

1 1 1 0 0 0

1 1 0 0 0 0

1 0 0 0 0 0

最終能擴散到目標位置得到最終步數,而乙個座標周圍的步數是一樣的.

所以bfs的原理:通過向四周進行擴散,將每個點到初始位置的距離記錄下來,

然後將所有點壓入佇列,然後從佇列中取出,查詢目標點,然後將目標點到初始

位置的點的距離輸出即可

列題

最短步數:

ac**:

#includeusing namespace std;

int map[10][9]=

;//存圖

int book[20][20];

int dir[4][2]= ; //移動方向

int n,m,ex,ey,sx,sy;

struct node

st,en;

queue q;

void bfs(int i,int j)//初始座標

//如果不是

en.step=st.step+1;//步數加一,這裡的en.step其實就是st.step,之前的操作

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

}}int main()

}

word2vector 理解入門

我們先來看乙個問題,假如有乙個句子 the dog bark at the mailman 假如用向量來表示每個單詞,我們最先想到的是用one hot 編碼的方式來表達每個單詞,具體來說。the 可以表示為 1,0,0,0,0 dog 可以表示為 0,1,0,0,0 bark 可以表示為 0,0,1...

初識React Redux之粗暴理解入門

import react,from react import proptypes from prop types import reactdom from react dom import from redux import from react redux react component 檢視元件...

同餘詳解入門

同餘關係 同餘 如果a和b除以c的餘數相同,就說a和b關於模c同餘,記作a b mod c 如果兩個數a和b的差能夠被m整除,那麼就說a和b對模數m同餘 關於m同餘 比如,28 13 15除以5正好除盡,我們就說28和13對於模數5同於,因為15是5的整 數倍。它的另外一層含義就是說 28和13除以...