較容易理解 的廣搜

2021-06-01 12:10:53 字數 957 閱讀 9702

#include#include#include#includeusing namespace std;

#define max 10

int map[max][max];int i,j;int n;

int visited[max][max];int dist[max][max];

int direction[4][2]=,,,};

class point

;int over(point p)

point newpoint;

void bfs(point p)

} }}int main()

} //輸入

getchar();

char str[max];

for(i=0;i}

//計算

point p;p.col=0;p.row=0;

bfs(p);

cout<} return 0;}/*

輸入資料

500011

01000

00101

10001

10000

dist矩陣。

01200

23050

04560

05678

1 搜尋法的原則是

先放入第乙個初始的點。

從佇列裡面取出來乙個點,標記訪問過,擴充套件這個點的所有點,標記訪問過(因為以後訪問的都只是他周圍的點

,所以對他自己判定不生效)。直到隊列為空

2 程式設計的時候注意**的美感。

3 這個問題有乙個拼寫錯誤visited[newpoint.row][newpoint.col];

4 要簡化一下。有乙個start點,讓後其他的改為p和cs。

5 搜尋題肯定有的東西

1 方向

2 判出界

3 定義類point

*/

廣搜題(較複雜)

演算法核心 void bfs int x,int y for int j 1 j 3 j 迴圈走的步數 解釋一下,就是剛開始定義了 這使得讓方向和陣列的i下標對應 先從剛開始的位置開始走,迴圈四個方向,這裡用i的大小 1 4 表示方向,然後如果這個方向需要當前的方向轉兩次就step 2,轉一次就加一...

廣搜的優化

其實主要的思想與深搜類似 放兩個題吧 這個題思想很好 一開始我都不知道qwq include include include include include using namespace std const int n 300000 int t,r,c,n intdis n p n cnt boo...

廣搜的入門

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