求助 P1135 就第一个测试点TLE了
#include<iostream>
using namespace std;
int n, a, b, k[210], ans = 200, d = 0, j[210] = {0}, bj = 0;
void dfs(int x) {
if (d >= ans) {
return;
}
if (x == b) {
ans = d;
bj = 1;
return;
}
if (x + k[x] <= n && j[x + k[x]] == 0) {
j[x + k[x]] = 1;
d ++;
dfs(x + k[x]);
j[x + k[x]] = 0;
d --;
}
if (x - k[x] > 0 && j[x - k[x]] == 0) {
j[x - k[x]] = 1;
d ++;
dfs(x - k[x]);
j[x - k[x]] = 0;
d --;
}
}
int main() {
cin >> n >> a >> b;
for (int i = 1; i <= n; i++) {
cin >> k[i];
}
j[a] = 1;
dfs(a);
if (bj == 1) {
cout << ans << endl;
} else {
cout << -1 << endl;
}
return 0;
}