#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。這個地方有提到用棧來優化深度優先搜尋。這個我覺得可以想想,比如走一條...