#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]==Wmp[nx][ny]=='W'mp[nx][ny]==1mp[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) }}
- 正确
- 错误