學習深搜和廣搜在阿哈算法中有挺好的例子:應用的主要有樹,圖的遍歷,迷宮尋路,還有全排序這類變換過的搜索。
深搜的模型://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];
}
}
}