1. DFS(深度优先搜索):优先进行深度纵向搜索,DFS所需的内存少于BFS所需的内存,利用堆栈实现,适合找最短路径。
2. BFS(广度优先搜索):优先进行广度横向搜索,用队列实现,更适合找最短距离,内存所需较多。
DFS:
void dfs(long long int f,long long int step)
{
//cout<<f<<" "<<step<<endl;
if(step >= cnt || ant[f] <= step) return;
ant[f] = step;
if(f == b) {
cnt = step;
return;
}
step++;
if(f+k[f] <= n)dfs(f+k[f],step);
if(f-k[f] > 0)dfs(f-k[f],step);
}