学习深搜和广搜在阿哈算法中有挺好的例子:应用的主要有树,图的遍历,迷宫寻路,还有全排序这类变换过的搜索。
深搜的模型://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];
}
}
}