1.注意不移动的情况,即A==B
2.注意不符合题目要求的特殊输出,本题输出-1;
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
int a[205], f[2005][205];
int main() {
int N, A, B;
cin >> N >> A >> B;
for (int i=1; i <= N; i++) {
cin >> a[i];
}
if (A == B) {
cout << 0; return 0;
}
f[0][A] = 1;
for (int i = 0; i <= 2000; i++) {
for (int j = 1; j <= N; j++) {
if (f[i][j]) {
if (j + a[j] <= N)
f[i + 1][j + a[j]] = 1;
if (j - a[j] >= 1)
f[i + 1][j - a[j]] = 1;
if (f[i + 1][B] ==1) {
cout << i+1;
return 0;
}
}
}
}
cout << -1;
return 0;
}