16过6大佬求调
查看原帖
16过6大佬求调
975459
Wimmer楼主2024/10/26 11:06
#include<cstdio>
const int N=2e3+10;
int n,b,k[N],flag=-1;
void dfs(int a,int d,int* v){
    if(a==b&&(flag==-1||d<flag)){
        flag=d;
        return;
    }
    if((a-k[a])>=1&&(a-k[a])<=n&&(!v[a-k[a]])){
        v[a-k[a]]=1;
        dfs(a-k[a],d+1,v);
        v[a-k[a]]=0;
    }
    if((a+k[a])>=1&&(a+k[a])<=n&&(!v[a+k[a]])){
        v[a+k[a]]=1;
        dfs(a+k[a],d+1,v);
    }
}
int main(){
    int a,v[N]={0};
    scanf("%d %d %d",&n,&a,&b);
    v[a]=1;
    for(int i=1;i<=n;++i)scanf("%d",&k[i]);
    dfs(a,0,v);
    printf("%d",flag);
    return 0;
}
2024/10/26 11:06
加载中...