求助
查看原帖
求助
760712
_fox_楼主2023/7/28 16:46
#include<bits/stdc++.h>
using namespace std;
int A,B,n;
int k[201],vis[201],ans=201;
void dfs(int x,int step){
	if(vis[x]<=step){
		return;
	}
	vis[x]=step;
	if(x==B){
		ans=min(ans,step);
		return;
	}
	for(int i=-1;i<=1;i++){
		int next_x=x+i*k[x];
		if(next_x<1||next_x>n||vis[next_x]){
			continue;
		}
		vis[next_x]=true;
		dfs(next_x,step+1);
		vis[next_x]=false;
	}
} 
int main(){
	cin>>n>>A>>B;
	for(int i=1;i<=n;i++){
		cin>>k[i];
	}
	dfs(A,0);
    if(ans!=0x7ffffff){
		cout<<ans;
	}
    else{
	cout<<"-1";
	}
	return 0;
}

2023/7/28 16:46
加载中...