深搜演算法與廣搜演算法總結
阿新 • • 發佈:2019-01-26
學習深搜和廣搜在阿哈演算法中有挺好的例子:應用的主要有樹,圖的遍歷,迷宮尋路,還有全排序這類變換過的搜尋。
深搜的模型://stack
void dfs(int x, int y) { if(conditon) { //深搜結束的條件 print; return; } for(int i = 0; i <= 3; i++) {//與當前點聯結的點, 一一遍歷 int tx = nextx(i); int ty = nexty(i); if(condition(tx) && condition(ty)) dfs(tx, ty); } }
廣搜模型://queue
int wfs() {
Queue que;
que.push(data[0][0]);
while(!que.empty()) {
printf(que.pop());
for(int i = 0; i <= 3; i++) {
int tx = nextx[i];
int ty = nexty[i];
if(tcondition(tx) && condition(ty ))
que.push(data[tx][ty];
}
}
}