#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) }}

  • 正确
  • 错误