#JC1042. 广度优先搜索(一)

广度优先搜索(一)

一、单项选择题(每题2分,共20分)

1、广度优先搜索BFS依靠下面哪个容器实现?() {{ select(1) }}

  • stack栈
  • queue队列
  • vector动态数组
  • string字符串

2、BFS搜索特点描述正确的是?() {{ select(2) }}

  • 能深则深,走不通就回退
  • 逐层向外扩散,一层一层搜索
  • 必须使用递归实现
  • 搜索过的点可以反复入队

3、BFS中结构体node的作用是?() {{ select(3) }}

  • 只存地图障碍物数量
  • 保存格子的行x、列y坐标
  • 用来统计连通块面积
  • 存储方向数组dx、dy

4、BFS入队的时候对vis标记数组操作正确的是?() {{ select(4) }}

  • 取出队首之后再标记vis=1
  • 入队的同时立刻设置vis=1
  • 全程不需要vis数组
  • vis只标记终点位置

5、4方向数组dx[4]={1,0,-1,0},dy[4]={0,1,0,-1}代表的顺序是?() {{ select(5) }}

  • 上、右、下、左
  • 下、右、上、左
  • 下、左、上、右
  • 上、左、下、右

6、BFS循环条件,继续搜索的条件是?() {{ select(6) }}

  • while(!q.empty())
  • while(q.empty())
  • while(q.size()==0)
  • while(q.front()>0)

7、多组测试数据做BFS,不需要做下面哪一项?() {{ select(7) }}

  • 清空队列q
  • vis数组全部重置为0
  • 直接复用上次队列和vis
  • 读取本组地图数据

8、迷宫寻宝,起点本身就是障碍物,应当如何处理?() {{ select(8) }}

  • 正常把起点入队再搜索
  • 直接输出NO,不用执行BFS
  • 修改起点为通路再入队
  • 跳过起点直接搜索相邻点

9、求岛屿连通块面积,每遇到合法可走格子入队,需要?() {{ select(9) }}

  • ans计数器自增统计格子数量
  • 判断是否等于宝藏数字2
  • 直接return结束程序
  • 不需要任何计数操作

10、BFS中q.pop()功能描述正确的是?() {{ select(10) }}

  • 获取队首元素坐标
  • 删除队首元素,不返回数据
  • 在队尾添加新元素
  • 判断队列是否为空

二、判断题(每题2分,共10分)

11、BFS广度优先逐层搜索,起点不计入层数,第一步走到的点属于第一层。() {{ select(11) }}

  • 正确
  • 错误

12、BFS可以递归实现,DFS必须使用队列实现。() {{ select(12) }}

  • 正确
  • 错误

13、BFS如果等到取出队首才标记vis,会出现同一个点多次重复入队。() {{ select(13) }}

  • 正确
  • 错误

14、统计整张地图连通块数量,需要双重循环遍历地图,遇到合法未访问点启动BFS。() {{ select(14) }}

  • 正确
  • 错误

15、BFS判断新坐标nx,ny,只需要判断不越界就可以直接入队。() {{ select(15) }}

  • 正确
  • 错误