一、题目描述
地上共有N个格子,你需要调完地上所有的格子,但是格子间是有强依赖关系的,跳完前一个格子后,后续的格子才会被开启,格子间的依赖关系由多组steps数组给出,steps[0]表示前一个格子,step[1]表示steps[0]可以开启的格子。
比如[0,1]表示从跳完第0个格子以后第1个格子就开启了,比如[2,1],[2,3]表示跳完第2个格子后第1个格子和第3个格子就被开启了。
请你计算是否能由给出的steps数组跳完所有的格子,如果可以输出yes,否则输出no。
说明:
- 你可以从一个格子调到任意一个开启的格子;
- 没有前置依赖条件默认就是开启的;
- 如果总数是N,则所有的格子编号为[0,1,2,3…N-1]l连续的数组
二、输入描述
第一行输入两个正整数,第一个整数N表示总共有多少个格子,第二个整数表示二维数组的大小M。
接下来的M行输入二维数组steps表示所有格子之间的依赖关系。
三、输出描述
如果能按照steps给定的依赖顺序跳完所有的格子输出yes,否则输出no。
四、解题思路
深度优先搜索算法(Depth First Search,简称DFS):一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件,搜索将回溯到发现节点v的那条边的起始节点。整个进程反复进行直到所有节点都被
本文介绍了华为OD机试2023B卷中的一道题目,涉及一个需要按照依赖关系跳完所有格子的游戏。通过深度优先搜索(DFS)算法,解析输入并遍历格子,确定能否按给定步骤完成游戏。文章提供了解题思路、Java代码实现及示例测试,旨在帮助考生理解并解决此类问题。
订阅专栏 解锁全文
506






