Code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a,b,ans,k[210];
bool flag[210];
void dfs(int now,int num){ if(now == b){
ans = min(ans,num); return ;
} if(now + k[now] <= b &&
flag[now + k[now]] == 0){
flag[now + k[now]] = 1;
dfs(now + k[now],num + 1);
flag[now + k[now]] = 0;
} if(now - k[now] >= 0 &&
flag[now - k[now]] == 0){
flag[now - k[now]] = 1;
dfs(now - k[now],num + 1);
flag[now - k[now]] = 0;
} return ;
} signed main(){ ans = 1e9;
// freopen("elevator.in","r",stdin);
// freopen("elevator.out","w",stdout);
cin >> n >> a >> b;
for(int i = 1;i <= n;i++) cin >> k[i];
flag[a] = 1; dfs(a,0);
if(ans == 1e9){
cout << "-1";
}else cout << ans;
return 0;
}
机房模拟赛写的,交上去90,在锣鼓只有52?!?!(应该庆幸没被卡分吗?)
咋回事啊,求调……