關於廣搜,就是乙個寬度搜尋的乙個過程。
我們來理解一下它的搜尋的過程。
來有乙個&代表沒有搜尋的地方,0代表搜尋過的地方。
比如:&&&0&
第一步:
&&&0&
&&000
&&&0&
第二步:
&&&0&
&&000
&0000
&&000
你可以看得出來,這個過程,就是如同病毒擴散一樣,每乙個搜尋到的新的點,都可以作為新搜尋點,搜尋點可以有四個方向。
直到搜尋結束。
理解了過程,我們來處理學習bfs的搜尋**:
經典廣搜題
看了這個部落格:
就可以大概理解清楚搜尋題目,以及裡面**的解釋;
然後下面我們給出乙個模板:
第乙個是通常的乙個做法:
第二個是乙個多點同時進行的搜尋過程;
#include#include#include#include#includeusing namespace std;
int dis[4][2]= ;
struct point
;int bfs(point s,point e,int map[9][9])//}}
}int main()
; scanf("%d%d%d%d",&s.x,&s.y,&e.x,&e.y);
printf("%d\n",bfs(s,e,map));
}return 0;
}
#include#include#include#include#include#include#define pi acos(-1.0)
#define maxn 0x3f3f3f3f
#define minn 0xc0c0c0c0
using namespace std;
typedef long long ll;
const int n=1e3+10;
char s[n][n];
int n,m;
int ans[n][n];
int dis[4][2]= ; //方向
struct node
st,en;
queueq;
int judge()//判斷條件
return 0;
}void bfs()
}}int main()
memset(ans,-1,sizeof(ans));
for(int i=0;i}
}bfs();
for(int i=0;iprintf("\n");
}return 0;
}
bfs 廣搜 模板
廣度優先搜尋演算法 breadth first search 又譯作寬度優先搜尋,或橫向優先搜尋,簡稱bfs,是一種圖形搜尋演算法。簡單的說,bfs是從根節點開始,沿著樹的寬度遍歷樹的節點。因為所有節點都必須被儲存,因此bfs的空間複雜度為 o v e 其中 v 是節點的數目,而 e 是圖中邊的數目...
深入理解模板1
1,模版引數可以有三種型別 1 型別 2 編譯時常量 3 其他模版.2,型別 include include using namespace std template class stack int main 3,編譯時常量 include include using namespace std t...
bfs 廣搜 馬的遍歷
includeusing namespace std int dirx 8 int diry 8 const int n 405 int dp n n int n,m,x,y int new x,new y bool vst n n 訪問標記 queuevis bfs佇列 bool checksta...