#include <iostream>
using namespace std;
const int N = 210;
int n, a, b;
int q[N], step[N];
void dfs(int m, int start) //start是开始楼层, m是所需要的步数
{
if (step[start] <= m) return;
step[start] = m; // 更新step的值
if (start + q[start] <= n) dfs(m + 1, start + q[start]);
if (start - q[start] >= 1) dfs(m + 1, start - q[start]);
return;
}
int main()
{
cin >> n >> a >> b;
for (int i = 1; i <= n; i++)
{
cin >> q[i];
step[i] = n + 1;
}
dfs(0, a);
if (step[b] == n + 1) cout << "-1";
else cout << step[b];
return 0;
}
算法学习代码集
最新推荐文章于 2024-09-17 23:15:52 发布