廣度優先搜尋的學習

2021-07-09 21:37:13 字數 1161 閱讀 5132

同樣也是用乙個迷宮的例子

#includeusing namespace std;

struct note

;int main() ;//地圖

int book[51][51] = ;//標記哪些點走過了

int next[4][2] = ,//右

,//下

,//左

//上}; int head, tail,flag;

int next_x, next_y;

int n,m,start_x,start_y,p,q;

cout << "輸入行和列" << endl;

cin >> n >> m;

cout << "輸入迷宮" << endl;

for (int i = 1; i <= n; i++)

for (int j = 1; j <= m; j++)

cin >> a[i][j];

cout << "輸入起點座標" << endl;

cin >> start_x >> start_y;

cout << "輸入終點座標" << endl;

cin >> p >> q;

head = 1;//佇列初始化

tail = 1;

que[tail].x = start_x;

que[tail].y = start_y;

que[tail].s = 0;

tail++;

book[start_x][start_y] = 1;

flag = 0;//標記是否到達,1為到達

while (headn || next_y<1 || next_y>m)//判斷越界

continue;

if (a[next_x][next_y] == 0 && book[next_x][next_y] == 0)

if (next_x == p&&next_y == q)

} if (flag == 1)

break;

head++;//當乙個點擴充套件結束後,head++才能對下乙個點擴充套件

} cout << que[tail - 1].s << endl;//tail是指向隊尾的下乙個位置,所以要減一

return 0;

}

搜尋 廣度優先搜尋

廣度優先搜尋一層一層地進行遍歷,每層遍歷都是以上一層遍歷的結果作為起點,遍歷乙個距離能訪問到的所有節點。需要注意的是,遍歷過的節點不能再次被遍歷。class solution,int shortestpathbinarymatrix vectorint grid length return 1 cl...

廣度優先搜尋

include include include include using namespace std struct node 圖頂點結構定義 typedef struct node graph 圖形的結構新型態 struct node head 9 圖形頂點陣列 int visited 9 遍歷標...

廣度優先搜尋

廣度優先搜尋詳解 1.也稱寬度優先搜尋,顧名思義,就是將一棵樹一層一層往下搜。演算法首先搜尋和s距離為k的所有頂點,然後再去搜尋和s距離為k l的其他頂點。bfs是一種完備策略,即只要問題有解,它就一定可以找到解。並且,廣度優先搜尋找到的解,還一定是路徑最短的解。但是它盲目性較大,尤其是當目標節點距...