#JC1037. 深度优先搜索(一)
深度优先搜索(一)
一、单项选择题(每题2分,共20分)
1、深度优先搜索DFS核心思想描述正确的是?()。 {{ select(1) }}
- 先横向把每一层全部搜完
- 能深则深,不能深则退,走不通回退换路径
- 必须使用for循环,不能用递归实现
- 搜索过的点可以无限重复访问
2、深度优先搜索一般借助什么技术实现?()。 {{ select(2) }}
- 递归
- 冒泡排序
- 二分查找
- 差分
3、迷宫搜索中vis标记数组,vis=1代表的含义是?()。 {{ select(3) }}
- 当前位置是障碍物
- 当前位置还没有访问
- 当前位置已经被搜索访问过
- 当前是终点宝藏
4、4方向数组dx[4]={1,0,-1,0}, dy[4]={0,1,0,-1},dx[0],dy[0]代表哪个方向?()。
{{ select(4) }}
- 向上
- 向下
- 向左
- 向右
5、dfs函数传入参数dfs(int x,int y),x和y代表?()。
{{ select(5) }}
- 地图行列总大小
- 当前所在位置的行、列坐标
- 终点的行、列坐标
- 方向数组下标
6、在main函数调用dfs搜索迷宫,关于起点处理正确的是?()。 {{ select(6) }}
- 不需要任何处理,直接调用dfs
- 先把起点vis标记为1,再调用dfs
- 起点vis标记为0,调用结束再标记
- 起点必须设置为障碍物
7、迷宫搜索时,新坐标tx、ty,执行操作顺序正确的是?()。 {{ select(7) }}
- 直接dfs(tx,ty); 再vis[tx][ty]=1;
- vis[tx][ty]=1; 再dfs(tx,ty);
- 只调用dfs,不用vis数组
- 先修改地图g数组,再递归
8、迷宫题目bool类型flag变量的作用是?()。 {{ select(8) }}
- 统计一共走了多少步
- 标记是否已经找到终点目标
- 存储迷宫地图数据
- 用来控制循环次数
9、八连通迷宫搜索,方向数组dx、dy数组长度应该设置为?()。 {{ select(9) }}
- 2
- 4
- 8
- 9
10、迷宫判断条件,下面哪一项不属于合法坐标判断条件?()。 {{ select(10) }}
- 坐标不能越出地图边界
- 该点没有被访问过
- 该点不是障碍物
- vis数组的值必须等于2
二、判断题(每题2分,共10分)
11、递归调用语句之前的代码属于递进阶段,之后的代码属于回归阶段。() {{ select(11) }}
- 正确
- 错误
12、深度优先搜索迷宫,访问过的房间可以再次重复访问,不会出现问题。() {{ select(12) }}
- 正确
- 错误
13、迷宫搜索,如果起点本身是障碍物,直接输出NO,不需要再执行dfs。() {{ select(13) }}
- 正确
- 错误
14、4方向数组可以直接拿来做8方向迷宫搜索,不需要修改。() {{ select(14) }}
- 正确
- 错误
15、DFS递归层数过大,会发生栈溢出,程序崩溃。() {{ select(15) }}
- 正确
- 错误