【新】华为OD机试 - 跳格子(Python)

这篇博客介绍了华为OD统一考试B卷的跳格子题目,详细解析了如何通过深度优先遍历来解决这个依赖关系的问题。通过Python代码实现,解释了每个示例的输入、输出及说明,帮助读者理解解题思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OD统一考试 B卷:跳格子

题目

地上共有 N 个格子,你需要跳完地上所有的格子,但是格子间是有强依赖关系的,跳完前一个格子后,后续的格子才会被开启,格子间的依赖关系由多组 steps 数组给出,
steps[0] 表示前一个格子, steps[1] 表示 steps[0] 可以开启的格子:
比如 [0,1] 表示从跳完第0个格子以后第 1 个格子就开启了,
比如 [2,1][2,3] 表示跳完第 2 个格子后第 1 个格子和第 3 个格子就被开启了
请你计算是否能由给出的 steps 数组跳完所有的格子,
如果可以输出 yes,否则输出 no
说明:

  1. 你可以从一个格子跳到任意一个开启的格子
  2. 没有前置依赖条件的格子默认就是开启的
  3. 如果总数是 N,则所有的格子编号为 [0,1,2,3....N-1] 连续的数组

1 <= N < 500
steps[i].length = 2
0 <= step[i][0],step[i][1] < N

输入

输入一个整数 N 表示总共有多少个格子,接着输入多组二维数组 steps 表示所有格子之间的依赖关系

输出

如果能按照 steps 给定的依赖顺序跳完所有的格子输出 yes
否则输出 no

示例一

输入

3
0 1
0 2

输出

yes

说明

总共有三个格子 [0,1,2],跳完 0 个格子后第 1 个格子就开启了,
跳到第 0 个格子后第 2 个格子也被开启了,
按照 0->1->2 或者 0->2->1 的顺序都可以跳完所有的格子

示例二

输入

2
1 0
0 1

输出

no

说明

总共有 2 个格子,第 1 个格子可以开启第 0 格子,
但是第 1 个格子又需要第 0 个格子才能开启,相互依赖,因此无法完成

示例三

输入

6
0 1
0 2
0 3
0 4
0 5

输出

yes
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想橡皮擦

如有帮助,来瓶可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值