#719. 秘境跳跃探险

秘境跳跃探险

题目描述

小码玩家闯入了一条狭长的一维秘境通道,通道由连续的数字格子组成。通道中部分格子存在致命障碍物,无法停留与经过。玩家拥有三种跳跃能力,每次移动只能选择其中一种跳跃模式。玩家需要从起点出发,以最少的跳跃步数抵达终点,求解最短通关步数,若无法抵达终点则输出 -1。

给定一个长度为 nn 的一维通道数组,下标范围为 0n10 \sim n-1。 数组中每个格子有两种状态:

  • 0:安全格子,可以停留、跳跃经过
  • 1:障碍物格子,无法进入、无法停留、无法跨越 玩家固定拥有 三种跳跃模式,每一步操作必须选择其中一种执行:
  1. 向前跳 1 格
  2. 向前跳 2 格
  3. 向后跳 1 格

跳跃后所在的格子必须在通道范围内(0posn10 \le pos \le n-1) 跳跃后的目标格子不能是障碍物

输入格式

第一行输入一个正整数nn,表示通道长度。 第二行输入 nn 个整数(0/1),表示一维通道的格子状态。 第三行输入两个整数 s,ts,t,分别代表起点下标、终点下标。

输出格式

输出一个整数,代表最短跳跃步数;无法到达输出 -1

8
0 0 1 0 0 0 1 0
0 7
4

样例解释

最优路径:0→1(+1)→3(+2)→4(+1)→5(+2)→7(,共4步,全程避开所有障碍物。

数据范围与提示

  • 1n10001 \le n \le 1000
  • 0s,tn10 \le s,t \le n-1
  • 起点、终点保证为安全格子(值为0)