王道机试 第9章 搜索
深度优先搜索 DFS
深度优先搜索模板
void dfs(int cur)
{
if (cur == n && 其他到达终点的条件)
{
输出答案;
}
if (剪枝) return;
else for (int i = 0; i < n; i++) //遍历n种情况
{
if (其他可达条件 && !vis[i])
{
其他操作,比如更新序列值
vis[i] = true;
dfs(cur + 1);
vis[i] = false;
}
}
}
例题9.3 The Knight’s Journey
- 题目解析
- 跳马的方向数组dir,根据题目要求,元素按照字典序排序!
- dfs返回值为bool类型,如果为false则输出impossible,否则输出路径
- 利用string记录路径,每次ans+cow+rol
- 注意坐标nx和ny与坐标轴p和q的对应关系!nx对应竖着的,也就是p,y对应横着的,也就是q!</