有的结果大1,有的结果正确?
感觉可能是非常低级的错误
(帮助可关,蟹蟹)
#include <bits/stdc++.h>
using namespace std;
bool flag=0;
int N,A,B,K[205],vis[205],ans=1e9;
void dfs(int now,int step){
//cout<<ans<<endl;
if(step>ans)return;
if(K[now-1]==0&&now!=B)return;
if(now==B){
ans=min(ans,step);
flag=1;
return;
}if(now+K[now-1]<=N&&!vis[now+K[now-1]-1]){
vis[now+K[now-1]-1]=1;
dfs(now+K[now-1],step+1);
}if(now-K[now-1]>=1&&!vis[now-K[now-1]-1]){
vis[now-K[now-1]-1]=1;
dfs(now-K[now-1],step+1);
}return;
}
int main(){
cin>>N>>A>>B;
for(int i=0;i<N;i++)cin>>K[i];
dfs(A,0);
if(!flag||N==0)cout<<-1;
else cout<<ans;
return 0;
}