#JC1038. 深度优先搜索(二)

深度优先搜索(二)

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

1、下面关于连通块描述正确的是?()。 {{ select(1) }}

  • 单个格子不能成为连通块
  • 值相同,4/8方向可以互相到达的一片区域
  • 连通块只能是正方形
  • 连通块格子的值必须互不相同

2、4连通搜索,格子可以往哪些方向移动?()。 {{ select(2) }}

  • 上下左右四个方向
  • 上下左右+四个斜向共8个方向
  • 只能向右向下
  • 只能斜着移动

3、8连通水洼题目,方向数组dx、dy数组长度应为?()。 {{ select(3) }}

  • 2
  • 4
  • 8
  • 10

4、求起点出发连通块格子数量,关于起点处理正确的是?()。 {{ select(4) }}

  • vis起点不用标记,ans初始为0
  • vis起点标记为1,ans初始值等于1(起点算一格)
  • 起点直接调用dfs,不需要任何变量
  • 起点当做障碍物处理

5、统计整张地图连通块总个数,需要怎么做?()。 {{ select(5) }}

  • 只从(1,1)调用一次dfs
  • 双重循环遍历全部格子,遇到符合条件且未访问的格子就调用dfs,cnt++
  • 只需要一层for循环遍历行
  • 不需要vis标记数组

6、“红与黑”题目,障碍物字符是?()。 {{ select(6) }}

  • @
  • .
  • #
  • W

7、围成面积题目,求被1包围的内部0的数量,正确思路是?()。 {{ select(7) }}

  • 直接从地图中间开始dfs搜索0
  • 从地图外圈dfs标记所有外部的0,统计剩下未标记的0
  • 只搜索值等于1的格子
  • 直接统计全部0的总数

8、连通块dfs函数内,对新坐标nx,ny执行顺序正确的是?()。 {{ select(8) }}

  • 先dfs(nx,ny),再vis[nx][ny]=1
  • 先vis[nx][ny]=1,再调用dfs(nx,ny)
  • 只递归,不需要vis数组
  • 先修改地图mp的值,再递归

9、疾病预防系统,统计数字1的连通块数量,dfs函数主要作用是?()。 {{ select(9) }}

  • 计算整个地图所有数字总和
  • 将同一个连通块所有格子全部打上已访问标记
  • 修改地图中1变成0
  • 统计每个格子的坐标

10、字符地图判断可通行,下面写法正确的是(水洼题,W为积水)?()。 {{ select(10) }}

  • mp[nx][ny]==W
  • mp[nx][ny]=='W'
  • mp[nx][ny]==1
  • mp[nx][ny]!=0

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

11、4连通只能上下左右移动,斜对角相邻不算连通。() {{ select(11) }}

  • 正确
  • 错误

12、统计连通块大小时,ans初始为0即可,起点不需要算入总数。() {{ select(12) }}

  • 正确
  • 错误

13、统计整张地图连通块数量时,每调用一次dfs代表找到1个连通块,cnt要加1。() {{ select(13) }}

  • 正确
  • 错误

14、字符地图可以直接拿数字0、1去和mp数组元素做相等判断。() {{ select(14) }}

  • 正确
  • 错误

15、dfs递归的时候,如果不做vis标记,会出现重复递归,造成死循环。() {{ select(15) }}

  • 正确
  • 错误