有人看看吗,80分
查看原帖
有人看看吗,80分
197606
mohari楼主2020/5/20 11:00
#include<bits/stdc++.h>
using namespace std;
int n,m,A,B;
int flag=0,ans=0x3f3f3f,vis[205];
int a[205];
void dfs(int k,int step){
    if(vis[k]||step>ans)return;
    if(k<1||k>n)return;
    if(k==B){
        flag=1;
        ans=min(ans,step);
        return ;
    }
    vis[k]=1;
    dfs(k+a[k],step+1);
    dfs(k-a[k],step+1);
}
int main()
{
    cin>>n>>A>>B;
    fill(vis,vis+205,0);
    for(int i=1;i<=n;i++)cin>>a[i];
    dfs(A,0);
    if(!flag)cout<<"-1"<<endl;
    else cout<<ans<<endl;
}

2020/5/20 11:00
加载中...