#JC1057. 深度搜索进阶
深度搜索进阶
一、单项选择题(每题2分,共20分)
1、深度优先搜索(DFS)的核心特点是?() {{ select(1) }}
- 一层一层向外扩展访问
- 只能用于排序问题
- 必须使用队列实现
- 能深则深,走不通就回溯退回上一层
2、广度优先搜索BFS一般依靠队列实现,深度优先DFS主要依靠什么实现?() {{ select(2) }}
- 栈/递归
- 数组
- 哈希表
- 结构体
3、迷宫统计路径数量,走完一条路径回溯时vis数组应当如何处理?() {{ select(3) }}
- 保持vis=1不改变
- 直接清空整个地图数组
- 将vis标记重置为0,撤销访问标记
- 直接终止全部递归
4、在迷宫DFS中dx[]、dy数组的主要作用是?() {{ select(4) }}
- 存储迷宫地图障碍物
- 标记格子是否访问过
- 统计连通块的总个数
- 保存上下左右方向的坐标偏移量
5、全排列算法中box数组的作用是?() {{ select(5) }}
- 标记数字是否被使用
- 保存当前已经选择的数字
- 存放方向偏移量
- 统计一共多少种方案
6、全排列递归函数,x == n+1表示什么含义?()
{{ select(6) }}
- 递归发生错误直接退出
- 只选好了第一个数字
- n个数字全部选取完毕,输出一组排列
- 所有数字均不可选用
7、全排列中vis[i]==1代表?()
{{ select(7) }}
- 数字i还未被选用
- 到达迷宫边界
- 递归可以直接return
- 数字i已经被选用
8、想要得到降序优先输出的全排列,在调用dfs前需要执行哪一步?() {{ select(8) }}
- 将数组进行降序排序
- 将数组升序排序
- 把vis数组全部置1
- 修改方向数组dx dy
9、n个数选k个做组合(不生成重复序列),循环i应当从哪里开始?() {{ select(9) }}
- 每次循环固定从下标1开始
- 随机选取下标
- 从上一次选中位置的下一个下标开始
- 固定等于k值
10、迷宫深度搜索,下面哪一项不属于合法搜索判断条件?() {{ select(10) }}
- 新坐标不能超出地图边界
- 当前格子不能是障碍物
- 该格子没有被访问过
- 只要坐标存在就无条件递归
二、判断题(每题2分,共10分)
11、DFS深度搜索可以解决连通块统计、路径计数、全排列、组合问题。() {{ select(11) }}
- 正确
- 错误
12、统计连通块时,允许同一个格子被DFS多次重复访问。() {{ select(12) }}
- 正确
- 错误
13、全排列回溯过程,必须恢复vis标记,否则只能输出第一组方案。() {{ select(13) }}
- 正确
- 错误
14、组合问题n选k,如果循环i允许回头选前面下标,会产生重复的组合方案。() {{ select(14) }}
- 正确
- 错误
15、DFS递归如果没有合理终止条件,会造成栈溢出。() {{ select(15) }}
- 正确
- 错误